C 語言中的算法概念:定義、衡量標準與數據結構關係
算法 是解決特定問題的有限、確定、可行步驟序列,是程序的靈魂。
算法定義五大特徵
| 特徵 | 說明 |
| 有限性 | 有限步驟後終止 |
| 確定性 | 每步操作明確無歧義 |
| 可行性 | 每步可在有限時間內完成 |
| 輸入 | 零個或多個初始數據 |
| 輸出 | 一個或多個結果數據 |
衡量算法優劣的兩大核心指標
| 指標 | 含義 | 常用表示 |
| 時間複雜度 | 隨輸入規模增長的操作次數 | 大 O 符號:O(1)、O(log n)、O(n)、O(n log n)、O(n²) |
| 空間複雜度 | 隨輸入規模增長的額外存儲 | 大 O 符號:不含輸入本身佔用 |
經典例子:查找算法對比
| 算法 | 前提 | 時間複雜度 | 空間複雜度 |
| 線性查找 | 無序 | O(n) | O(1) |
| 二分查找 | 有序 | O(log n) | O(1) |
| 哈希查找 | 哈希表 | O(1) 平均 | O(n) |
算法與數據結構的關係
程序 = 數據結構 + 算法 (Wirth)
- 數據結構決定數據組織方式(陣列、鏈表、樹、圖、哈希表)
- 算法在特定數據結構上操作(插入、刪除、查找、排序、遍歷)
- 選擇合適的數據結構往往能降維打擊時間複雜度
學習建議
- 掌握基本排序(冒泡、選擇、插入、快排、歸併、堆排)
- 熟練基本數據結構操作(鏈表反轉、二叉樹遍歷、圖 BFS/DFS)
- 刷 LeetCode/Luogu 經典題,總結套路
- 學習《算法導論》(CLRS) 或《算法 4》建立理論體系