排序算法(冒泡排序)

一、基本思路

冒泡排序的思路比较简单,为什么叫冒泡呢?它的思路就是从第一个开始,和第二个元素比较,如果比后面的元素大,则交换顺序,接着第二个和第三个比较,这样,一趟下来,数组中最大的元素就会像泡泡一样“冒”到最后的位置,第二趟,第二大的元素将会“冒”到倒数第二个位置,由此,只要经过n-1趟,数组就完成了排序。

二、例子

我们以{3,5,7,9,8,6,2,1,4,0}数组的排序为例子

第一趟:冒泡区间1~9

3579862140
3578962140
3578692140
......

3578621409

这一趟,9出类拔萃,跃居第一名

第二趟:冒泡区间1~8

3578621409
3576821409

.....

3576214089

.这一趟,我们可以看到,8排到了第二名

.......

由此可见经过9趟冒泡后,数组的每个元素会在它该在的名次(位置)上,这样我们也就完成了对该数组的冒泡排序

三、代码实现

public class BubbleSort {
	public void bubbleSort(int [] data){
		int count=0;
		int f=0;
		for(int i=0;i<data.length;i++){
			for(int j=0;j<data.length-i-1;j++){ 
				if(data[j]>data[j+1]){
					int temp=data[j];
					data[j]=data[j+1];
					data[j+1]=temp;
					count++;
					f=1;
				}
			}
			if(f==0)
				break;
			f=0;
		}
		System.out.println("交换次数:"+count);
	}
	public static void main(String[] args) {
		int [] a=new int[]{3,5,7,9,8,6,2,1,4,0};
		BubbleSort bubbleSort=new BubbleSort();
		bubbleSort.bubbleSort(a);
		for(int item:a){
			System.out.print(item+" ");
		}
	}

}

四、复杂度

最差和平均情况的复杂度都是O(n²),最好的情况是O(n)
为什么最好的情况是O(n)?因为在第一遍冒泡的时候发现没有交换,直接中断退出冒泡排序,
所以只做了n-1次j++,次数为T(n-1),所以时间复杂度为O(n)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值