美文网首页
读《啊哈!算法》——冒泡排序

读《啊哈!算法》——冒泡排序

作者: 嘿喵heyMeow | 来源:发表于2017-01-08 23:05 被阅读0次

冒泡排序不用多说什么了,虽然复杂度很高,但是却这么“有名”。。。不论哪一门语言都应该会写这个,也算入门算法吧~~
直接上代码好了!

window.onload = function(){
    var arr=[];
    for(var i=0;i<10;i++){
        arr.push(prompt('请输入整数'));
    }
    for(var i=0;i<arr.length-1;i++){
        for(var j=0;j<arr.length-i;j++){
            if(arr[j]>arr[j+1]){
                var temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
};

冒泡排序的一个特点是嵌套循环,外层循环的次数是一共需要进行多少趟比较,2个数需要比较一次,3个数需要2次,类推n个数需要n-1次。内层循环是每趟比较需要比较几次,代码中用的是arr.length-i,因为比较一趟以后最大的数已经排到最后下一次无需再做比较,所以减掉i,即之前比过的数不用比较直接进行下一趟。

让我们来对冒泡排序封装成一个函数吧~
function bubbleSort(arr){
    for(var i=0;i<arr.length-1;i++){
        for(var j=0;j<arr.length-i;j++){
            if(arr[j]>arr[j+1]){
                var temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

喏,每次对数组排序就可以直接调用函数啦。
最后,需要记住冒泡排序的时间复杂度是O(N*N)。

相关文章

网友评论

      本文标题:读《啊哈!算法》——冒泡排序

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