實現方式1
function
buddle_sort
(arr)}}
}let arr =[7
,4,3
,67,34
,1,8
]buddle_sort
(arr)
console.
log(arr)
// [ 1, 3, 4, 7, 8, 34, 67 ]
解析: 依次比較相鄰兩個數大小,每次內迴圈都會將內迴圈中最大的數移到最後,內迴圈長度-1
迴圈引數: 外迴圈: 0–>n-1, 內迴圈:0–>n-1-j
j:0 i: 0-6 --> [ 4, 3, 7, 34, 1, 8, 67 ] 將0-6中最大的移到最後
j:1 i: 0-5 --> [ 3, 4, 7, 1, 8, 34, 67 ] 將0-5中最大的移到最後
...j:6 i: 0-0 --> [ 1, 3, 4, 7, 8, 34, 67 ] 將0-0中最大的移到最後
實現方式2
function buddle_sort(arr, fn)
}if (count == 0)
}}let arr1 = [7, 4, 3, 67, 34, 1, 8]
let arr2 = [ 1, 3, 4, 7, 8, 34, 67 ]
buddle_sort(arr1) // [ 1, 3, 4, 7, 8, 34, 67 ] 時間複雜度:o(n^2)
buddle_sort(arr2) // [ 1, 3, 4, 7, 8, 34, 67 ] 時間複雜度:o(n)
解析: 想象一下,如果我們輸入的本來就是乙個有序序列,其實只需要一次迴圈就夠了,所以我們需要針對特殊情況進行優化
對於氣泡排序來說,能不能傳入第二個引數(引數為函式),來控制公升序和降序?
function buddle_sort(arr, fn) }}}
let arr = [7, 4, 3, 67, 34, 1, 8]
buddle_sort(arr, (a, b) => a - b) // [ 1, 3, 4, 7, 8, 34, 67 ]
buddle_sort(arr, (a, b) => b - a) // [ 67, 34, 8, 7, 4, 3, 1 ]
冒泡 bubble 排序演算法
氣泡排序是穩定的排序演算法。1 氣泡排序演算法的基本思想 氣泡排序的方法為 將被排序的記錄陣列a 1.n 垂直排列,每個記錄a i 看做重量為a i 氣泡。根據輕氣泡不能在重氣泡之下的原則,從下往上掃瞄陣列a 凡是掃瞄到違反本原則的輕氣泡,就是其向上 漂浮 如此反覆進行,知道最後任何兩個氣泡都是輕者...
ES6演算法 快速排序 Quicksort
實現方式 function quick sort arr,start,end let mid arr start let low start let high end while low high arr low arr high while low high arr low mid arr hig...
演算法algorithm 冒泡(bubble)排序
待排序的陣列元素依次兩兩比較,如果前面的大於後面的,則進行交換 public static void main string args sort arr system.out.println arrays.tostring arr private static void sort int arr p...