冒泡排序

冒泡排序(Bubble Sort)也是一种简单直观的排序算法。

它重复地走访过要排序的元素列,依次比较两个相邻的元素,
如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。
走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

动图演示排序过程


bubbleSort.gif

总结:

1.进行数组的大小 - 1次循环
2.每一次循环排序的次数逐渐减少
3.如果发现某次循环排序没有发现一次交换,则可以提前结束排序(优化)

代码实现(java)

    /**
     * 已经优化的冒泡排序(从小到大排序)
     *
     * @param array 需要排序的数组
     */
    public static void sort(int[] array) {
        // 临时变量,用于辅助交换
        int temp;

        // 交换标识,默认没有发生交换
        boolean flag = false;
        // 两两比较,因此最后一个是倒数第二个(length - 1)
        for (int i = 0; i < array.length - 1; i++) {

            // length - 1 - i:比较次数逐渐减少,每循环一次 - 1,即 - i
            // 后面的即为最大的因此不需要再排序
            for (int j = 0; j < array.length - 1 - i; j++) {
                // 比较大小,大于则进行交换
                if (array[j] > array[j + 1]) {
                    temp = array[j];
                    // 发生交换
                    flag = true;

                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
            // 如果没有发生交换,说明已经排好了,则结束循环
            if (!flag) {
                break;
            }
        }

    }

什么时候最快

当输入的数据已经是正序时。

什么时候最慢

当输入的数据是反序时。

查看源码

选择排序

插入排序

快速排序

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。