記冒泡排序實現原理


冒泡排序:

數值小的慢慢向上浮起,形同冒泡,即升序排列數值

實現過程:

相鄰數值兩兩交換,每輪冒泡(循環)把最小/大的數放在最后。

從第一個數值開始,如果相鄰兩個數的排列順序與我們的期望不同,則將兩個數的位置進行交換(對調);

如果其與我們的期望一致,則不用交換。

重復這樣的過程,一直到最后沒有數值需要交換,則排序完成。

關鍵點:

冒泡排序的輪次 最大為 n-1

每輪的交換次數 最大為 n-1,n-2,n-3,....1

圖解:

 

 

 

代碼實例:

 //冒泡排序 升序
    var arr=[3,5,4,6,1,2]
    //比較輪數
    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]){
                if(arr[j]>arr[j+1]){
                //借助第三方變量temp交換兩個變量的值
                var temp=arr[j];//當前值
                //通過比較相鄰位置互換
                arr[j]=arr[j+1];//把后一位值向前移一位
                arr[j+1]=temp;//把當前一位值向后移一位
            }
        }
    }
  } console.log(arr);
//輸出結果[1,2,3,4,5,6]

簡單封裝

 //封裝
    function compare(arr){
        //比較輪數
        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]){
                //借助第三方變量temp交換兩個變量的值
                var temp=arr[j];//當前值
                //通過比較相鄰位置互換
                arr[j]=arr[j+1];//把后一位值向前移一位
                arr[j+1]=temp;//把當前一位值向后移一位
            }
        }
    }
    return arr;
    }
    console.log(compare([5,6,5,2,8,9])); //輸出[2, 5, 5, 6, 8, 9]

數組排序其他方法

sort()

   var arr=[3,5,4,6,1,2]
    //sort()
    function sortNumber(a,b){
        //return a-b;//升序
        return b-a;降序
    }
   console.log(arr.sort(sortNumber));//輸出[6, 5, 4, 3, 2, 1]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM