iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 3
0

氣泡排序法,顧名思義它在排序的過程,值的排序過程會有點像泡泡上升一樣。

假設有一陣列[7,5,1,20,8]
第一輪排序為[5,7,1,20,8]
第二輪排序為[5,1,7,20,8]
第三輪排序為[5,1,7,20,8]
第四輪排序為[5,1,7,8,20]

以上我們已經初步迴圈過4輪,為何不跑第5輪呢?因為我們發現最後一個數字不需要比較排序,在第4輪就已經排序好了,所以在寫氣泡排序法時候,就可以array length - 1輪地去跑迴圈,而又發現在第4輪還無法將整個陣列完整排序好,所以需要一直遞迴地去排序。

function bubbleSort(arr){
  let compareCount=arr.length;
  //We don't need to compare the last item because the last two element has been compared and changed in the last second time.
  while(compareCount-1>0){
    compareCount--;
    for(let i=0;i<compareCount;i++){
      //If the right value is bigger than left value we need to change their position.
      if(arr[i]>arr[i+1]){
        [arr[i],arr[i+1]]=[arr[i+1],arr[i]];
      }
    }
  }
  return arr;
}

const arr=[7,5,1,20,8];
console.log(bubbleSort(arr));

return [ 1, 5, 7, 8, 20 ]

完整程式碼


上一篇
桶子排序法(Bucket Sort)
下一篇
選擇排序法(Selection Sort)
系列文
透過JavaScript學習演算法與資料結構30

尚未有邦友留言

立即登入留言