這裏是傳送門⇒總結:關於排序算法html
平均時間複雜度 | 最優時間複雜度 | 最差時間複雜度 | 空間複雜度 | 穩定性 | |
---|---|---|---|---|---|
冒泡排序 | O(n2) | O(n2) | O(n2) | O(1) | 穩定 |
優化後 | O(n2) | O(n) | O(n2) | O(1) | 穩定 |
// 使用公用函數Swap // 交換array[i]和array[j] function Swap(array, i, j) { var temp = array[i]; array[i] = array[j]; array[j] = temp; } // 此處傳入的array會被直接改變 function BubbleSort(array) { var len = array.length; for (var i = 0; i < len - 1; i++) { for (var j = 0; j < len - i - 1; j++) { if (array[j] > array[j + 1]) { Swap(array, j, j + 1); } } } }
// 此處傳入的array會被直接改變 function BubbleSortPlus(array) { var len = array.length; var didswap; for (var i = 0; i < len - 1; i++) { didswap = false; for (var j = 0; j < len - i - 1; j++) { if (array[j] > array[j + 1]) { Swap(array, j, j + 1); didswap = true; } } if (!didswap) { break; } } }