思路:
1. 相邻两个数进行比较,如果位置不对,进行交换,整个数组中未排序的数都比较了一遍叫做一趟。
2. 把数组中的未排序元素都比较一遍叫做
一趟,这一趟需要比较很多次才能完成。
3. 每一趟只能保证把最大数挪到当前未排好序的数据的最后。
4. 弄清楚一共需要比较多少趟。n-1
5. 弄清楚每一趟需要比较多少次。第一趟需要比较n-1,后面随着趟数的增加,比较次数会逐渐减少,每次减少1。
6. 外层循环控制趟数,内层循环控制每一趟要比较的次数。
7. 在循环体中对位置不对数据的进行调整。
看图理解思路:
核心代码实现:
public void bubble_sort(int num[], int length) {
int i, j;
for (i = 0; i < length - 1; i++) //外层循环控制趟数,总趟数为length-1
for (j = 0; j < length - 1 - i; j++) //内层循环为当前i趟数所需要比较的次数
if (num[j] >num[j + 1])
swap(numr[j], num[j + 1]); //进行交换,将小的元素往前移, 大的元素往后挪
}