js十大排序-冒泡排序

172 阅读1分钟

前端知识整理-冒泡排序

冒泡排序

原理

冒泡排序的原理是从左到右,先获取第一个元素,然后和后面一个元素进行比对,如果后面的大,那么交换位置,否则不交换,比对完成后,继续找后一个元素比对,直到最后一个。假设总共有5个元素,那么:

  • 第一轮:第一个元素需要和后面4个比对,比对次数4。
  • 第二轮:第二个元素需要和后面3个比对,比对次数3。
  • 第三轮:第三个元素需要和后面2个比对,比对次数2。
  • 第四轮:第四个元素需要和后面1个比对,比对次数1。
  • 第五轮:没有需要比对的元素了。

所以冒泡排序的支持次数是4+3+2+1,也就是如果有5个元素,一开始的比对次数是4,按数学中的递减相加公式:((n+1)*n)/2,n是最大比对次数。能够得到如果有n个元素时需要的执行次数。

代码执行次数:((n+1)*n)/2

代码

function bubbleSort(arr) {
    var len = arr.length;
    for(var i = 0; i < len - 1; i++) {
        for(var j = 0; j < len - 1 - i; j++) {
            if(arr[j] > arr[j+1]) {        // 相邻元素两两对比
                [arr[j], arr[j+1]] = [arr[j+1], arr[j]] // 元素交换
            }
        }
    }
    return arr;
}