时间: 2020-11-25|38次围观|0 条评论

面试中需要手写频率最高的一个排序,也是最简单

冒泡排序就是两两比较,把最大的放到最后面

public class SortDemo {
    public static void main(String[] args) {
        int[] arr = { 2, 1, 4, 5, 3 };
        // 第一轮:12453、12453、12453、12435【此时5已经排好序了,第二轮比较的时候不需要再算上5】
        // 第二轮:12435、12435、12345
        // ...
        SortDemo.bubble(arr);
    }

    // 冒泡排序
    public static void bubble(int[] arr) {
        // 比较length-1轮,剩下的那一个数字自然就是最小的排在最前面
        for (int i = 0; i < arr.length - 1; i++) {
            // 每轮比较多少次、上一轮已经排好序的不需要再动了
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
                System.out.println(Arrays.toString(arr));
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

 

一开始扫过N个数、然后扫过N-1个数...等差数列

时间复杂度O(n^2):

可以通过增加一个附加标记来优化该算法

转载于:https://www.cnblogs.com/yuange678/p/10628716.html

原文链接:https://blog.csdn.net/weixin_30342827/article/details/97731665

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《八大基本排序–冒泡排序
   

还没有人抢沙发呢~