Stan Blog

學習過程中的一些記錄

[Algorithm] Bubble Sort (泡沫排序)

Bubble Sort 的定義 (參考維基百科)

重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來
走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成

主要步驟

  1. 比較相鄰的元素。如果第一個比第二個大,就將他們兩個交換位置
  2. 向每一對相鄰元素作同樣操作,從開始第一對到結尾最後一對

時間複雜度:O(N^2)

範例程式碼

Ruby 範例

附上 Ruby 的 online sandbox,有興趣可以把 code 貼進去玩玩看

arr = [1, 4, 2, 3, 5, 7, 8, 6, 9]

def bubble_sort(array)
  array_length = array.size
  return array if array_length <= 1

  swapped = true
  while swapped do
    swapped = false
    (array_length - 1).times do |i|
      if array[i] > array[i + 1]
        array[i], array[i + 1] = array[i + 1], array[i]
        swapped = true
      end
    end
  end

  array
end

pp bubble_sort(arr)

結果如下

螢幕快照 2020-11-04 13 53 46

JavaScript 範例

JavaScript 的 online sandbox,有興趣可以把 code 貼進去玩玩看

const arr = [1, 4, 2, 3, 5, 7, 8, 6, 9]

function bubbleSort (array) {
    const arrayLength = array.length;
    for (let i = 0; i < arrayLength; i++) {
        for (let j = 0; j < arrayLength; j++) {
            if(array[j] > array[j+1]) {
              let temp = array[j]
              array[j] = array[j+1];
              array[j+1] = temp;
            }
        }
    }
    return array
}

console.log(bubbleSort(arr))

結果如下

螢幕快照 2020-11-04 14 10 33

Comments

comments powered by Disqus