Algorithm in Javascript Bubble Sort

水墨寒發表於2016-12-16

氣泡排序
理解:
氣泡排序演算法的流程如下:

  1. 比較相鄰的元素。 如果第一個比第二個大,就交換他們兩個。
  2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。 在這一點,最後的元素應該會是最大的數。
  3. 針對所有的元素重複以上的步驟,除了最後一個。
  4. 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

核心思想:
比較兩個相鄰位置如果位置錯誤就交換
圖解:

Algorithm in Javascript Bubble Sort

Algorithm in Javascript Bubble Sort

Comparison Sorting Visualization點選連結後選擇Bubble Sort

程式碼實現:

function bubbleSort (arr) {
  let len = arr.length
  // 通過交換每次選出最大的放大哦最後,排到第二位時候一次交換完成,
  // 所以排多少次是固定的 len - 1
  for (let i = 1; i < len; i++) {
    // 每次把最大的數推到最後,最後排序已經固定了,沒有必要再排
    for (let j = 1; j <= len - i; j++) {
      if (arr[j] < arr[j - 1]) {
        [arr[j], arr[j - 1]] = [arr[j - 1], arr[j]]
      }
    }
  }
  return arr
}
console.log(bubbleSort([1,3,9,8,7,2]))複製程式碼

番外篇

學習演算法遇遇到的好的資料
一個不錯的部落格 bubkoo.com/
演算法視覺化的網站Data Structure Visualization

相關文章