前端面試題:演算法-氣泡排序

GeekQiaQia發表於2019-04-11

陣列排序之氣泡排序: 重寫氣泡排序


   /**
     *  
     *  
     *  外層迴圈outer:控制比較躺數;控制條件arr.length>=2;
     *  內層迴圈inner:進行冒泡,每次冒泡,都將當前比較趟中的最大值,沉澱到最後:arr[outer-1];
     *  內層迴圈每次從arr[0],開始向後比較,每一趟排序要比較次數outer-1;
     *  如果arr[inner]>arr[inner+1];則進行交換位置;
          使用ES6中的解構賦值:
          交換位置
          [arr[inner],arr[inner+1]]=[arr[inner+1],arr[inner]]
     *  [4,3,2,1]
     * */
    Array.prototype.bubbleSort=function(){
        let arr=this,len=arr.length;
        for(let outer=len;outer>=2;outer--){
            
            for(let inner=0;inner<outer-1;inner++){
                  
                    if(arr[inner]>arr[inner+1]){
                        [arr[inner+1],arr[inner]]=[arr[inner],arr[inner+1]]
                    }
            }
        }

        return arr;
    }
複製程式碼

相關文章