系列文章:
初学者必学的四种排序
排序——选择排序
排序——冒泡排序
排序——插入排序(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标志来记录该次扫描是否发生交换,若没有发生交换则排序完成,退出循环。
下一篇:排序——插入排序