|
此網頁內容為旗標科技公司出版的「會動的演算法」書中演算法動畫列表。在電腦上觀看時,請用滑鼠點選各個演算法對應的 QR Code 圖示;使用手機觀看時,請開啟手機內建的相機 App,或是開啟掃描 QR Code 的 App,即可觀看演算法逐步執行的動畫,建議搭配書中的說明,學習效果會更好喔!
本書出版前已力求內容的正確性,但相關內容也許在您閱讀時已有更新,作者會不定期更新書中的錯誤,您可以連到勘誤表查詢,中文版書籍已更新 2021 年以前的所有錯誤!若有本書的任何問題可 E-mail 給作者 (渡部有隆)。
|
|
|
|
|
|
資料結構 | 時間複雜度 | 原則 | 技巧 | |
---|---|---|---|---|
堆疊 | 後進先出 (LIFO:Last-In-First-Out) | |||
佇列 | 先進先出 (FIFO:First-In-First-Out) | |||
優先佇列 | 優先取出優先權高者 |
演算法 | 時間複雜度 | 穩定性 | 原地排序 | 技巧 | 特色 | |||
---|---|---|---|---|---|---|---|---|
氣泡排序法 | 〇 | 〇 |
|
× 不實用 | ||||
選擇排序法 | × | 〇 |
|
× 不實用 | ||||
插入排序法 | 〇 | 〇 |
|
〇當資料接近升冪排列時速度很快 | ||||
Shaker Sort (篩動排序法) |
〇 | 〇 |
|
〇當資料接近升冪排列時速度很快 | ||||
合併排序法 | 〇 | × |
|
〇 穩定且快速 × 需要額外記憶體 |
||||
快速排序法 | × | 〇 |
|
× 速度會受基準值的選擇影響 〇 原地且快速 |
||||
堆積排序法 | × | 〇 |
|
× 執行速度有可能受系統影響 | ||||
希爾排序法 | × | 〇 |
|
× 速度會受間隔的選擇影響 | ||||
計數排序法 | 〇 | × |
|
× 元素的值有上限 (元素值不宜太大) |
演算法 | 時間複雜度 | 距離 | 技巧 | |
---|---|---|---|---|
廣度優先搜尋 | 從單一起點到所有節點的最短路徑 (邊數) | |||
戴克斯特拉演算法 (線性搜尋法) |
從單一起點到所有節點的最短路徑 ※ 不得有負權重 |
|||
戴克斯特拉演算法 |
從單一起點到所有節點的最短路徑 ※ 不得有負權重 |
|||
貝爾曼 - 福特演算法 |
從單一起點到所有節點的最短路徑 可以有負權重 可檢測出負迴路 |
|||
弗洛伊德演算法 |
各節點間的最短路徑 可以有負權重 可檢測出負迴路 |
資料結構 | 時間複雜度 | 記憶體效率 | 有無順序 | 應用 | |
---|---|---|---|---|---|
鏈結串列 | 〇 | 〇有順序 | 串列、字典 | ||
雜湊表 | × | × | 字典 | ||
二元搜尋樹 | 〇 | 〇已排序 | 字典、集合、優先佇列、 最大值、最小值 |
||
樹堆 | 〇 | 〇已排序 | 字典、集合、優先佇列、 最大值、最小值 |
Last Update: