氣泡排序
理解:
氣泡排序演算法的流程如下:
- 比較相鄰的元素。 如果第一個比第二個大,就交換他們兩個。
- 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。 在這一點,最後的元素應該會是最大的數。
- 針對所有的元素重複以上的步驟,除了最後一個。
- 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
核心思想:
比較兩個相鄰位置如果位置錯誤就交換
圖解:
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