冒泡排序

作者: 创奇 | 来源:发表于2020-07-24 10:56 被阅读0次

冒泡排序(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;
            }
        }

    }

什么时候最快

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

什么时候最慢

当输入的数据是反序时。

查看源码

选择排序

插入排序

快速排序

相关文章

网友评论

    本文标题:冒泡排序

    本文链接:https://www.haomeiwen.com/subject/cdcjlktx.html