冒泡排序

定义

冒泡排序作为最常见的排序方式之一,其操作是在相邻的两个元素之间进行比较交换,每一次排序结果都能取出一个最大(最小)值,一个n个元素的待排序列表,最多只需要进行(n-1)次排序即可。

示例

以整型数组{2,9,11,5,7,20,8}为例:

原始列表:2->9->11->5->7->20->8
1次排序:2->9->5->7->11->8->20   
2次排序:2->5->7->9->8->11->20
3次排序:2->5->7->8->9->11->20  已经形成有序数组
4次排序:2->5->7->8->9->11->20   该次排序发现无调整元素,结束排序
所以并不需要(n-1)次排序即完成了排序操作

参考代码

class t{
	public static void main(String[] args){
		int[] arr=new int[]{2,9,11,5,7,20,8};
		BubbleSort.sort(arr);
		for(int i:arr){
			System.out.print(i+" ");
		}
		System.out.println();
	}
}
class BubbleSort{
	public static void sort(int[] arr){
		int i=0,j=0,temp=0;
		boolean flag=true; //设置循环结束标志
		for(i=1;i<arr.length;i++){    //排序次数
			flag=true;   //每次排序之前设置true
			for(j=0;j<arr.length-i;j++){
				if(arr[j]>arr[j+1]){
					temp=arr[j+1];
					arr[j+1]=arr[j];
					arr[j]=temp;
					flag=false;   //但凡需要调整操作,表示整个列表尚需进行下次排序调整
				}
			}
			if(flag){break;}  //判断循环结束标志
		}
	}
}

总结

冒泡排序原理是相邻元素的比较调整,最终形成有序列表,没有发生元素的跳换,属于稳定排序,平均时间复杂度为O(n^2)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值