內容簡介
本書是備受廣大讀者推崇的數據結構與算法入門教程,已在 GitHub 獲得超 60k 的 Star,並多次登頂 GitHub Trending。主要特點有:
書中系統介紹了數據結構與算法基礎、複雜度分析、數組與鍊表、棧與佇列、哈希表、樹、堆、圖、搜尋、排序、分治、回溯、動態規劃和貪心算法等核心知識,通過清晰易懂的解釋和豐富的代碼示例,以及生動形象的全彩插圖和線上動畫圖解,揭示算法工作原理和數據結構底層實現,教授讀者如何選擇和設計最優算法來解決不同類型的問題,切實提升編程技能,構建完整的數據結構與算法知識體系。
讀者對象
本書面向計算機相關專業的大學生和該領域的從業者,也適用於對算法感興趣、具有一定編程經驗的人士。
作者簡介
靳宇棟(@krahets),前華為高級算法工程師,上海交通大學碩士,西安交通大學本科,專注於3D重建與渲染、3D生成算法的研究。曾獲VEX機器人世界錦標賽冠軍、全球人工智慧創新大賽一等獎。喜歡在開源社區分享知識,作品的GitHub Star超60,000,訂閱人數超460,000。
目錄
序
前言
第 1 章 初識算法 1
1.1 算法無處不在 1
1.2 算法是什麼 5
1.2.1 算法定義 5
1.2.2 數據結構定義 5
1.2.3 數據結構與算法的關係 5
1.3 小結 7
第 2 章 複雜度分析 9
2.1 算法效率評估 9
2.1.1 實際測試 9
2.1.2 理論估算 10
2.2 疊代與遞歸 10
2.2.1 疊代 11
2.2.2 遞歸 13
2.2.3 兩者對比 18
2.3 時間複雜度 19
2.3.1 統計時間增長趨勢 20
2.3.2 函式漸近上界 21
2.3.3 推算方法 22
2.3.4 常見類型 23
2.3.5 最差、最佳、平均時間複雜度 30
2.4 空間複雜度 32
2.4.1 算法相關空間 32
2.4.2 推算方法 33
2.4.3 常見類型 34
2.4.4 權衡時間與空間 38
2.5 小結 39
第 3 章 數據結構 42
3.1 數據結構分類 42
3.1.1 邏輯結構:線性與非線性 42