【排序算法】-冒泡排序Bubble Sort

2015-09-07  本文已影响190人  歇歇

简介

冒泡排序,将临近的数字两两比较,按照大小顺序进行位置交换。

讲解

设示例数组为:[5,2,7,1,4,9,8],小->大排序;

  1. 第一趟排序

我们可以发现,该算法的复杂度为:(n-1)+(n-2)+...+2+1=n(n-1)/2

演示代码

//从小到大排序
function bubbleSort(array){
    var tem = 0;
    for (var i = 0; i < array.length; i++) {
        for (var j = 0; j < array.length-i; j++) {
            if(array[j]>array[j+1]){
                tem = array[j];
                array[j] = array[j+1];
                array[j+1] = tem;
            }
        }
    }
}

window.onload=function(){
    var array = [2,3,1,4,9,7,5];
    bubbleSort(array);
    console.log(array);
}
代码执行结果

补充一:最近听见很多同学在说冒泡排序的复杂度为n的平方,百度一看似乎蛮多人也是这样认为的,看到的同学难免会有些为难究竟哪一个复杂度是正确的。

事实上,两者都是正确的,n(n-1)/2是比较精确,而n^2则是表示该算法复杂度的数量级。
n(n-1)/2 --->
(n^2-n)/2 --->
当n足够大时,-n的影响很小,而为了表示数量级n^2的系数1/2也去掉 --->
那么现在复杂度就是n^2了

上一篇 下一篇

猜你喜欢

热点阅读