一、冒泡排序的原理
冒泡排序:将待排序的一组数分为有序区间和无序区间。先在无序区间通过相邻数的比较,将无序区间的最大数依次冒泡到最上面,持续这个过程,直到整组数有序。
二、图解分析
以[3, 0, 5, 4, 1, 2]为例,进行冒泡排序。
第一趟:从下往上依次两两比较,将最大数交换到最上面,第一趟完成后橙色部分为已排好的部分。
第二趟:比较方法同上,橙色部分为排好的区间,我们发现有序区间比第一趟的有序区间多一个数。
第三趟:
第四趟:
第五趟:
最后排好的整组数:
我们发现,每次排好序的区间数的个数都比前一趟多一个,所以待排序的6个数共循环了5次。
三、代码实现
public static void bubbleSort(int[] array) {
for(int bound = 0; bound < array.length - 1; bound++) { //外层循环(数组长度-1)次
for(int cur = 0; cur < array.length - 1 -bound; cur++) { //内层循环,有序区间不用再循环
if (array[cur] > array[cur + 1]) {
int tmp = array[cur];
array[cur] = array[cur + 1];
array[cur + 1] = tmp;
}
}
}
}
来源:51CTO
作者:Linnnna
链接:https://blog.51cto.com/14298563/2472789