9.Algorithms: Sorting 學習筆記

Claire Wei
ClaireWei
Published in
Jul 18, 2021

學習資料來源: Master the Coding Interview: Data Structures + Algorithms

此單元會談到的數個Sort類型:Bubble Sort, Selection Sort, Insertion Sort, Merge Sort, Quick Sort

【Bubble Sort】

1.從陣列第一及第二個值開始,兩兩比較,較大的值在右,直到比較完整個陣列 => 比完後最大的值會在陣列右邊第一個位置

2.第二輪一樣從頭開始兩兩比較 => 比完後第二大的值會在陣列右邊第二個位置

3.以此類推總共進行n(陣列長度)輪

示意圖

以此類推,直到最後一輪進行完畢得到 1 2 3 4 5 6 7 8

【用JS實作 Bubble Sort】

【Selection Sort】

1.從第一及第二個值開始,兩兩比較,找目前最小值,直到比較完整串數字 => 將最小值與第一個值交換

2.第二輪一樣從頭開始兩兩比較=> 比完後將第二小的值與第二個值交換

3.以此類推總共進行n(陣列長度)輪

示意圖

以此類推,直到最後一輪進行完畢得到 1 2 3 4 5 6 7 8

【用JS實作 Selection Sort】

【Insertion Sort】

輸入值數量小,或輸入值經過排序時,適合用Insertion Sort

1.陣列第二個和第一個比,較小的放右邊,第三個和前兩個比,放在符合其大小的位置,以此類推,直到比較完整個陣列

2.以此類推將各位置的項目放在適合的位置

示意圖

此輪進行完畢可得到 1 2 3 4 5 6 7 8

【用JS實作 Insertion Sort】

【Merge Sort】

Worse Case 的效率較好,記憶體容量沒有太多限制時可用

1.將陣列不斷拆半至成單一元件

2.左右兩兩一組比較,組內依大小排序後,再跟另一組比較,直到組合成新陣列

示意圖

合併完,可得到 1 2 3 4 5 6 7 8

【用JS實作 Merge Sort】

((log n)的概念類似tree的高度)

Quick Sort

隨機選擇一個值作為pivot,其餘值與pivot比較並移動位置,取果選到的pivot為極端值可能會造成O(n²)

回到筆記列表,文章中的內容如果有誤,歡迎提醒告知,謝謝!

--

--