iOS开发让前端飞程序员

冒泡排序

2017-07-30  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读