美文网首页
算法--冒泡排序(1)

算法--冒泡排序(1)

作者: 小囧兔 | 来源:发表于2018-02-22 11:59 被阅读0次

    首先排序分为四种:

      交换排序: 包括冒泡排序,快速排序。
    
      选择排序: 包括直接选择排序,堆排序。
    
      插入排序: 包括直接插入排序,希尔排序。
    
      合并排序: 合并排序。
    

    一、冒泡排序

    冒泡排序就像是抓一堆东西扔水里,重的沉在底部,轻的依次往上浮。


    image.png

    经过几次比较得到如下的结果:


    image.png
    外层循环表示的是要比较的次数,i=0;第一次比较,里层循环比较2和4,2比4小,不交换,4和5比较,4比5小,不交换,5和1比,交换,5和9比,5比9小,不交换,
    上面的图只是第一次比较,也就是外层循环第一次循环的时候得到的结果是[2,4,1,5,9];

    因为第一次循环的时候已经把最大的数沉在底部了,所以,外层第二次循环的时候,没有必要去比较数组的最后两项,里面不用再循环arr.length-1;而是arr.length-1-i;

      var arr=[2,4,5,1,9];
        function maopao(arr){
            //第一层循环: 表明要比较的次数,比如arr.length-1个数,肯定要比较arr.length-1次
            for(var i=0;i<arr.length-1;i++){
     //第二层循环:里面的循环再次完整执行,由于最大的数已经在最后了,没有必要去比较数组的最后两项
                for (var j=0;j<arr.length-1-i;j++){
                    if(arr[j]>arr[j+1]){
                         var t=arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=t;
                    }
                }
            }
            return arr;
        }
       console.log( maopao(arr)+"冒泡排序")
    

    时间复杂度之类的,现在还不是很明白,不过总算明白了冒泡排序的里层循环的长度为何是数组-1-外层循环了

    相关文章

      网友评论

          本文标题:算法--冒泡排序(1)

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