美文网首页算法
01-冒泡排序

01-冒泡排序

作者: 唔哒喂 | 来源:发表于2021-09-02 20:49 被阅读0次

Arr[i]和Arr[i+1]两位数据进行比较,逆序则将两位交换。
可以得知的是每次从头到尾遍历一遍,数组[length-遍历次数]的值必定是最大(小)值。
那么可知要遍历(length)次。即可将原无序数组变有序。
可知需要两个循环,一个控制次数,一个则用于比较。

1.根据上面思路写出

    public static void BubbleSort(int[] arr){
//        ①获取数组总长度,也是要遍历的次数
        int length = arr.length;
        int temp;

//        ②遍历次数
        for (int i = 0; i < length; i++) {
//            ps:-i是因为每一次的(length-遍历次数)位已经是最大(小)
//            ③比较大小(从小到大)
            for (int j = 0; j < length - i - 1; j++) {
                if (arr[j] > arr[j + 1]){
//                    ④交换
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

2.优化:遍历(几次<length)已经有序
如果一个数组只需要遍历几次就可以有序了,但是上述代码仍将会遍历length次。
造成浪费。
于是可以在 每一次遍历中 添加一个判断,判断是否进行了交换数据,如果没有出现交换,则可以看出数组已经有序。

    public static void BubbleSort(int[] arr){
//        ①获取数组总长度,也是要遍历的次数
        int length = arr.length;
//        添加一个交换与否Flag
        int temp;
        boolean swapFlag = false;
//        ②遍历次数
        for (int i = 0; i < length; i++) {
//            ps:-i是因为每一次的(length-遍历次数)位已经是最大(小)
//            ③比较大小(从小到大)
            for (int j = 0; j < length - i - 1; j++) {
                if (arr[j] > arr[j + 1]){
//                    ④交换
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    swapFlag = true;
                }
            }
            if (!swapFlag)
                break;
            swapFlag = false;
        }
    }

相关文章

  • 01-冒泡排序

    认识排序 什么叫排序?例如有下面的一串无序数字 排序前:3,1,6,9,2,5,8,4,7 排序后:1,2,3,4...

  • 01-冒泡排序

    Arr[i]和Arr[i+1]两位数据进行比较,逆序则将两位交换。可以得知的是每次从头到尾遍历一遍,数组[leng...

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

  • 详解排序算法--插入排序和冒泡排序

    冒泡排序插入排序插入排序和冒泡排序分析 冒泡排序 冒泡排序(英语:Bubble Sort,台湾另外一种译名为:泡沫...

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • iOS 面试必须会的---亲身经历+师兄面试后总结

    1.冒泡排序 冒泡排序,必须掌握 除了冒泡排序外还有 插入排序,对比排序,这里举例冒泡排序 2.单例 .h文件 ....

  • 01-冒泡排序(python、oc)

    简述:从前往后,如果我比你大,那么我就和你交换位置 最优时间复杂度 O(n) 最坏时间复杂度 O(n²) 稳定性:...

  • dailyLearning -- 排序算法

    目录: 冒泡排序 快速排序 选择排序 插入排序 归并排序 冒泡排序 冒泡排序(Bubble Sort),是一种计算...

  • 常用的两种排序-冒泡、选择

    Swift版 冒泡排序 选择排序 OC版 冒泡排序 选择排序

网友评论

    本文标题:01-冒泡排序

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