冒泡排序

你说的曾经没有我的故事 提交于 2020-02-26 01:49:28

一、冒泡排序的原理

冒泡排序:将待排序的一组数分为有序区间和无序区间。先在无序区间通过相邻数的比较,将无序区间的最大数依次冒泡到最上面,持续这个过程,直到整组数有序。

二、图解分析

以[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;
                        }
                }
        }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!