冒泡排序

作者: 你期待的花开 | 来源:发表于2017-07-30 15:49 被阅读141次

    基本思想

    比较每两个相邻记录的关键字,如果反序则交换

    时间复杂度

    最好的情况是 O(n)
    最坏的情况是 O(n^2)
    平均时间复杂度是 O(n^2)

    冒泡排序算法的过程如下:(从后往前进行,得到递减数组)

    1. 比较相邻的两个元素。如果后一个比前一个大,就交换他们两个。
    2. 对每一对相邻元素作同样的工作,从第一对到最后一对。最后的元素应该会是最大的数。
    3. 针对所有的元素重复以上的步骤,除了已排好顺序的。
    4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

    javascript 实现

         function bubbleSort(arr) {
            var temp, n = arr.length;
            for (var i = n; i > 0; --i) {
                for (var j = 0; j < i - 1; j++) {
                    if (arr[j] < arr[j + 1]) {
                        temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
            return arr;
        }
    
        var arr = [3, 2, 4, 9, 1, 5, 7, 6, 8];
        var arrSorted = bubbleSort(arr);
        console.log(arrSorted);//9, 8, 7, 6, 5, 4, 3, 2, 1
    

    相关文章

      网友评论

      • 知识学者:是递减数组吧🙄
        冒泡一般默认升序,大的下沉。
        大桥酱:亲,别这样。冒泡你想怎么排就怎么排。

      本文标题:冒泡排序

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