冒泡排序
冒泡排序
冒泡排序(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]);
        }
    }
}
控制台输出:

本文来自博客园,作者:Schieber,转载请注明原文链接:https://www.cnblogs.com/xiqingbo/p/java-07.html

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号