排序——冒泡排序

系列文章:
初学者必学的四种排序
排序——选择排序
排序——冒泡排序
排序——插入排序(Insertion sort)
排序——希尔排序

核心思想

⭐⭐通过多次从前向后扫描待排序序列,依次比较相邻元素的值,若发现逆序则交换,使得值较大的元素逐渐从前移向后部,这个过程被形象得概括为冒泡排序。
动图演示:
请添加图片描述

举例:
⭐⭐待排序序列:[4,8,2,6,1],要求从小到大排列
在这里插入图片描述
⭐⭐可得出:若待排序序列长度为n,则需进行n-1次扫描,最极端得情况下(完全逆序),一共需要n(n-1)/2次交换

代码实现(java版)

public static void main(String[] args) {
	        Scanner scan = new Scanner(System.in);
	        int n=scan.nextInt();
	        int[] a=new int[n];
	        int i=0;
	        int j=0;
	        for( i=0;i<n;i++) {
	        	a[i]=scan.nextInt();
	        }
	        //冒泡排序
	        for(i=0;i<n-1;i++){//n-1次扫描
	        	for(j=0;j<n-1-i;j++) {//每扫描依次,交换得最大次数就减一
	        		if(a[j]>a[j+1]) {//逆序则交换
	        			int temp;
	        			temp=a[j];
	        			a[j]=a[j+1];
	        			a[j+1]=temp;
	        		}
	        	}
	        	
	        }
	        for(i=0;i<n;i++) {
	        	System.out.print(a[i]+" ");
	        }
	        scan.close();
	    }

运行结果:
在这里插入图片描述

优化思路

⭐⭐若待排序序列长度为n,则需进行n-1次扫描,如果某一次扫描没有进行交换数据说明序列已经完成排序了,可以从这个特点入手,增加一个flag标志来记录该次扫描是否发生交换,若没有发生交换则排序完成,退出循环。

下一篇:排序——插入排序
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值