数据结构排序算法-冒泡排序

冒泡排序是一种简单的排序算法,通过相邻元素间的比较和交换来逐步排序。每趟比较后确定一个最大(或最小)值的位置。时间复杂度为O(n*n),空间复杂度为O(1),适合于小规模或局部有序的数据。本文介绍了冒泡排序的适用范围并提供了Java实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

冒泡排序

排序的思想

相邻的两个元素的关键字进行比较,小的元素向前移动(也

就是这里理解的向上冒泡),大的元素向后移动(也就是向下

沉)。

每一趟比较能确定一个最大的数。

在这里插入图片描述
每一趟比较结束之后,待排规模就-1。

排好之后:
在这里插入图片描述
1、时间复杂度

T(n)=O(n*n);

2、空间复杂度

S(n)=O(1);

3、稳定性

稳定

适用范围

n较小时。

局部有序时。

在n个待排序的数据中选择前k(k<n时)的最大值。

Java实现代码

package com.xingyun.paixu;

import java.util.Scanner;

/*
 * 
 *  冒泡排序:将相邻的两个元素进行比较,大的向后移动,也就是向下沉,小的向前移动,也就是向上冒泡
 *  每一趟的比较都能确定一个最大值(由自己决定,也可能是最小值,取决于你是升序还是降序)。
 *  每一趟比较完之后待排序列规模-1。
 * 
 * */
public class MaoPaoPaiXu {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		int s=11;
		int[] stu=new int[s];
		boolean bool=true;
		System.out.println("请输入要排序的序列规模"+(s-1));
		for(int i=1;i<stu.length;i++) {
			stu[i]=input.nextInt();
		}
		System.out.println("开始!");
		int swap=0;
		//n个数组元素需要进行n-1趟就能排好
		for(int i=0;i<stu.length-1;i++) {
			//每一次排序都比之前的比较次数少1个,因为每一次都能确定一个值的位置,而且不用和自身比较
			for(int k=0;k<stu.length-i-1;k++) {
				if(stu[k]>stu[k+1]) {
					swap=stu[k+1];
					stu[k+1]=stu[k];
					stu[k]=swap;
				}
			}
		}
		System.out.println("排好序之后的数组为:");
		for(int w:stu) {
			System.out.print(w+"\t");
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值