Loading

冒泡排序

冒泡排序

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。

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

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

中文名 外文名 时间复杂度 实质
冒泡排序 Bubble Sort O(n²) 把小(大)的元素往前(后)调
        /**
         * 冒泡排序
         */

        // 定义数组
        int[] array = new int[]{5, 3, 1, 6, 2, 19, 7, 88, 32};
        // 定义并初始化一个int类型的临时变量
        int temporary = 0;
        // 外层循环控制数组排序共需要循环多少次(每次相邻的两个元素进行比较,只需要比较数组总元素个数-1次)
        for (int i = 0; i < array.length - 1; i++) {
            // 内层循环控制第i次排序需比较多少次
            //(例如:第一次排序后会确定数组中最大的一个数,且不再参与比较。第二次再确定一个除最大数以外较大的数。以此类推)
            // 所以每次循环(数组的长度-i-1)次数即可。
            // 不可以使用(数组的长度-j-1),会导致循环提前结束而不计算数组中剩余元素的比较
            for (int j = 0; j < array.length - i - 1; j++) {
                // 相邻的两个元素进行比较,将较大的元素赋值给临时变量,从而实现换位操作
                if (array[j] > array[j + 1]) {
                    temporary = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temporary;
                }
            }
        }
        // 遍历排序后数组中的元素
        for (int k = 0; k < array.length; k++) {
            System.out.println(array[k]);
        }
    }
}

控制台输出:

冒泡排序

posted @ 2020-07-11 00:14  Schieber  阅读(176)  评论(0编辑  收藏  举报