2.Algorithm

演算法是解決問題的具體步驟與策略,結合資料結構能實現高效運算。常見類型如下:


1. 排序(Sorting)

常見演算法:

  • Bubble Sort:兩兩比較交換,效率低 O(n²)

  • Selection Sort:每輪選最小值 O(n²)

  • Insertion Sort:插入排序 O(n²),對幾乎排序資料有效

  • Merge Sort:分治法,穩定排序 O(n log n)

  • Quick Sort:分治法,平均 O(n log n),最壞 O(n²)


2. 搜尋(Searching)

  • 線性搜尋(Linear Search):從頭找起,O(n)

  • 二分搜尋(Binary Search):排序陣列中快速搜尋,O(log n)


3. 遞迴與分治(Recursion & Divide and Conquer)

將問題拆解為子問題再解,適用於樹狀結構、排序等

def factorial(n):
    return 1 if n == 0 else n * factorial(n-1)

4. 動態規劃(Dynamic Programming, DP)

儲存子問題解答以避免重複計算,常用於最短路徑、背包問題、最大子陣列和等


5. 貪婪演算法(Greedy)

每步選擇局部最優,期望導致全域最優,如最小生成樹、活動選擇問題


6. 回溯與 DFS / BFS

  • 回溯法(Backtracking):用於排列組合、數獨、N 皇后等

  • 深度優先搜尋(DFS):使用遞迴或堆疊遍歷圖或樹

  • 廣度優先搜尋(BFS):使用佇列,自上而下或找最短路徑


7. 常見算法面試應用

  • 雙指標(Two Pointers)

  • 滑動視窗(Sliding Window)

  • 前綴和(Prefix Sum)

  • 堆與優先佇列(Heap / Priority Queue)

  • 拓撲排序(Topological Sort)


掌握演算法設計與資料結構搭配,可提升解題效率與應對大型資料挑戰。建議透過實作、題庫訓練與圖解書籍建立直覺與策略感。

Last updated