[筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 11

重念一次早該補起來的「資料結構與演算法」。這篇筆記來初步簡介一下 合併演算法

[筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 74


課程相關資訊

[連結]:https://hiskio.com/courses/572/lectures/29810

本篇範圍:Chapter 6

請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。


內容

合併演算法會運用到 two pointer ( 用作兩個陣列各自的 index ) 和 recursion 遞迴 ( 用作拆分 array ) 的技巧。由於每一次進行 merge 都會需要新開一個陣列,所以會吃空間

1. 合併演算法必須是兩個 sorted 的陣列
2. divide & conquer – 拆成重複的小塊累積 (遞迴),然後一同處理
3. 時間複雜度為 nlogn -> n 層 * logN (執行次數)
4. 合併的實現邏輯是:
a. 兩陣列各自的 index 從 0 開始互比,若有滿足條件則該 index 加 1 ,直到任何一方 index 超過長度為止
b. 由於你不會知道各自的陣列 index 哪一個已走完全部,所以兩個陣列都需要跑一次迴圈將剩餘的跑完
5. 無論原始陣列是否已經排序完成,都需要完整跑完一次。因此無論何種情況的時間複雜度都是 nlogN

程式碼

https://github.com/andy922200/hiskio-the-idea-of-algorithm/commit/bdd7b79afd5a69e252b052047f5098e6fcd3dd84


系列文章

  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 9
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 81
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 80
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 8
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 79
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 78
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 77
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 76
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 75
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 74
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 73
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 72
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 71
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 70
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 7
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 69
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 68
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 67
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 66
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 65
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 64
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 63
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 62
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 61
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 60
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 6
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 59
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 58
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 57
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 56
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 55
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 54
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 53
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 52
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 51
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 50
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 5
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 49
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 48
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 47
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 46
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 45
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 44
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 43
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 42
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 41
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 40
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 4
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 39
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 38
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 37
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 36
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 35
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 34
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 33
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 32
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 31
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 30
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 3
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 29
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 28
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 27
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 26
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 25
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 24
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 23
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 22
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 21
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 20
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 2
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 19
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 18
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 17
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 16
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 15
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 14
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 13
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 12
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 10
  • [筆記] 程式必修課!資料結構與演算法|JavaScript 篇 – 1
  • 按讚加入粉絲團

    延伸閱讀