★★★★★【650張圖例】+【圖解演算法原理和邏輯思維】★★★★★
★★★★★【20個主題】+【149個Python程式實例】★★★★★
★★★★★【邏輯思維】+【Python實作】=【演算法的精髓】★★★★★
本書的第一版曾經獲得博客來與天瓏暢銷排行榜第1名,撰寫這本書時採用下列原則。
1:彩色圖片引導讀者認識演算法的邏輯思維。
2:Python程式實作演算法原理。
3:章節習題引導讀者複習與自我練習。
當讀者遵循這步驟學習時,相信一定可以完整學習演算法的相關知識,本書的主體內容如下:
☆ 20個主題
★ 認識時間複雜度和空間複雜度
☆ 7大資料結構完整圖說與程式實例
★ 7大排序法完整圖說與程式實例
☆ 遞迴與回溯演算法
★ 電腦領域的經典演算法八皇后和河內塔
☆ 碎形與VLSI設計應用
★ 圖形理論
☆ 深度、寬度優先搜尋
★ Bellman-Ford演算法
☆ Dijkstra’s演算法
★ 貪婪演算法
☆ 動態規劃演算法
★ 資訊安全演算法
☆ 摩斯與凱薩密碼
★ 金鑰系統觀念,解說設計金鑰方法或是應用目前市面上成熟的金鑰
☆ 訊息鑑別碼(Message authentication code)
★ 數位簽章(Digital Signature)
☆ 數位憑證(Digital certificate)
★ 基礎機器學習KNN演算法
☆ K-means演算法
★ 網頁排名演算法
☆ 常見的演算法考題與Leetcode考題
作者
洪錦魁
一位跨越電腦作業系統與科技時代的電腦專家,著作等身的作家。
■DOS時代他的代表作品是IBM PC組合語言、C、C++、Pascal、資料結構。
■Windows時代他的代表作品是Windows Programming使用C、Visual Basic。
■Internet時代他的代表作品是網頁設計使用HTML。
■大數據時代他的代表作品是R語言邁向Big Data之路。
■人工智慧時代他的代表作品是機器學習彩色圖解 + 基礎數學與基礎微積分 + Python實作
除了作品被翻譯為簡體中文、馬來西亞文,2000年作品更被翻譯為Mastering HTML英文版行銷美國,近年來作品則是在北京清華大學和台灣深智同步發行:
1:C、Java、Python最強入門邁向頂尖高手之路王者歸來
2:OpenCV影像創意邁向AI視覺王者歸來
3:Python網路爬蟲:大數據擷取、清洗、儲存與分析王者歸來
4:演算法最強彩色圖鑑 + Python程式實作王者歸來
5:matplotlib從2D到3D資料視覺化
7:網頁設計HTML+CSS+JavaScript+jQuery+Bootstrap+Google Maps王者 歸來
6:機器學習彩色圖解 + 基礎數學、基礎微積分 + Python實作王者歸來
7:R語言邁向Big Data之路王者歸來
8:Excel完整學習、Excel函數庫、Excel VBA應用王者歸來
9:Python操作Excel最強入門邁向辦公室自動化之路王者歸來
10:Power BI最強入門 – 大數據視覺化+智慧決策+雲端分享王者歸來
他的近期著作分別登上天瓏、博客來、Momo電腦書類暢銷排行榜前幾名,他的著作最大的特色是,所有程式語法或是功能解說會依特性分類,同時以實用的程式範例做解說,讓整本書淺顯易懂,讀者可以由他的著作事半功倍輕鬆掌握相關知識。
目錄
第一章 演算法基本觀念
1-1 電腦的演算法 … 1-3
1-2 遞迴函數設計 … 1-4
1-3 好的演算法與不好的演算法 … 1-11
1-4 程式執行的時間量測方法– 時間複雜度 … 1-15
1-5 記憶體的使用 – 空間複雜度 … 1-21
1-6 資料結構 … 1-25
1-7 習題 … 1-26
第二章 陣列(Array)
2-1 基本觀念 … 2-2
2-2 使用索引存取陣列內容 … 2-2
2-3 新資料插入陣列 … 2-3
2-4 刪除陣列元素 … 2-5
2-5 思考陣列的優缺點 … 2-6
2-6 與陣列有關的Python 程式 … 2-7
2-7 習題 … 2-12
第三章 鏈結串列(Linked list)
3-1 鏈結串列資料形式與記憶體觀念 … 3-2
3-2 鏈結串列的資料讀取 … 3-3
3-3 新資料插入鏈結串列 … 3-3
3-4 刪除鏈結串列的節點元素 … 3-4
3-5 循環鏈結串列(circle linked list) … 3-4
3-6 雙向鏈結串列 … 3-5
3-7 陣列與鏈結串列基本操作時間複雜度比較 … 3-5
3-8 與鏈結串列有關的Python 程式 … 3-5
3-9 習題 … 3-19
第四章 佇列(Queue)
4-1 資料插入enqueue … 4-2
4-2 資料讀取dequeue … 4-3
4-3 使用串列模擬佇列的操作 … 4-4
4-4 與佇列有關的Python 模組 … 4-6
4-5 習題 … 4-7
第五章 堆疊(Stack)
5-1 資料堆入push … 5-2
5-2 資料取出pop … 5-4
5-3 Python 實作堆疊 … 5-5
5-4 函數呼叫與堆疊運作 … 5-8
5-5 遞迴呼叫與堆疊運作 … 5-10
5-6 習題 … 5-13
第六章 二元樹(Binary Tree)
6-1 建立二元樹 … 6-2
6-2 刪除二元樹的節點 … 6-4
6-3 搜尋二元樹的數據 … 6-8
6-4 更進一步認識二元樹 … 6-9
6-5 記憶體儲存二元樹的方法 … 6-11
6-6 Python 實作二元樹 … 6-12
6-7 二元樹的缺點 … 6-39
6-8 習題 … 6-39
第七章 堆積樹(Heap Tree)
7-1 建立堆積樹 … 7-2
7-2 插入數據到堆積樹 … 7-4
7-3 取出最小堆積樹的值 … 7-6
7-4 最小堆積樹與陣列 … 7-8
7-5 Python 內建堆積樹模組heapq … 7-9
7-6 Python 硬功夫 - 自己建立堆積樹模組 7-15
7-7 習題 … 7-18
第八章 雜湊表(Hash Table)
8-1 基本觀念 … 8-2
8-2 雜湊表轉成陣列 … 8-3
8-3 搜尋雜湊表 … 8-8
8-4 雜湊表的規模與擴充 … 8-9
8-5 好的雜湊表與不好的雜湊表 … 8-11
8-6 雜湊表效能分析 … 8-12
8-7 Python 程式應用 … 8-13
8-8 認識雜湊表模組hashlib … 8-16
8-9 習題 … 8-21
第九章 排序
9-1 排序的觀念與應用 … 9-2
9-2 泡沫排序法(Bubble Sort)… 9-4
9-3 雞尾酒排序(Cocktail Sort) … 9-10
9-4 選擇排序(Selection Sort) … 9-14
9-5 插入排序(Insertion Sort) … 9-18
9-6 堆積樹排序(Heap Sort) … 9-21
9-7 快速排序(Quick Sort) … 9-26
9-8 合併排序(Merge Sort) … 9-29
9-9 習題 … 9-35
第十章 數據搜尋
10-1 順序搜尋法(Sequential Search) … 10-2
10-2 二分搜尋法(Binary Search) … 10-3
10-3 搜尋最大值演算法 … 10-6
10-4 習題 … 10-7
第十一章 堆疊、回溯演算法與迷宮
11-1 走迷宮與回溯演算法 … 11-2
11-2 迷宮設計堆疊扮演的角色 … 11-5
11-3 Python 程式實作走迷宮 … 11-6
11-4 習題 … 11-9
第十二章 從遞迴看經典演算法
12-1 費波納契(Fibonacci) 數列 … 12-2
12-2 河內塔演算法 … 12-4
12-3 八皇后演算法 … 12-17
12-4 碎形 – VLSI 設計演算法 … 12-21
12-5 習題 … 12-25
第十三章 圖形(Graph) 理論
13-1 圖形(Graph) 的基本觀念 … 13-2
13-2 廣度優先搜尋演算法觀念解說 … 13-6
13-3 Python 實作廣度優先搜尋演算法 … 13-13
13-4 深度優先搜尋演算法理論與實作 … 13-22
13-5 習題 … 13-30
第十四章 圖形理論之最短路徑演算法
14-1 戴克斯特拉(Dijkstra's) 演算法 … 14-2
14-2 貝爾曼- 福特(Bellman-Ford) 演算法 14-7
14-3 A* 演算法 … 14-10
14-4 習題 … 14-14
第十五章 貪婪演算法(Greedy Algorithm)
15-1 選課分析 … 15-2
15-2 背包問題 – 貪婪演算法不是最完美的結果 … 15-5
15-3 電台選擇 … 15-8
15-4 業務員旅行 … 15-16
15-5 NP-Complete 問題 … 15-24
15-6 習題 … 15-25
第十六章 動態規劃演算法
16-1 再談背包問題 – 動態規劃演算法 … 16-2
序/導讀
序
這本書的第一版曾經獲得博客來與天瓏暢銷排行榜第1 名。
市面上已經有許多演算法的書籍,這些書籍普遍的缺點如下:
紙上談兵不切實際,只介紹演算法原理,只有很少的片段程式碼。讀者學會哪些書籍所述的演算法原理,最後依舊沒有實作能力,其實演算法的原理不困難,如何將原理用程式實作才是演算法的精髓。
書籍不是使用 Python 實作,與當前最熱門的 Python 程式脫鉤,未來無法融入企業電腦環境。
撰寫這本演算法書籍,筆者時時記住下列2 個原則:
1: 用彩色圖片引導讀者認識演算法的邏輯思維,方便讀者輕鬆學習,這本書包含了約650 張演算法的邏輯思維圖片,這也是目前演算法書籍有最多彩色邏輯思維圖片的書籍。
2: 教導讀者使用Python 實作演算法理論,全書共有149 個程式實例 + 71 個習題實作,這也是目前演算法書籍有最多Python 程式實例的書籍。
這本書是筆者所著演算法書籍的第3 版,相較前一版,主要增加下列內容:
獨家彩色圖解河內塔移動過程的步驟與原理
自動販賣機
基數轉換
重新詮釋歐幾里德演算法
網頁排名 Page Rank 演算法
增加 LeetCode 考題
棒球比賽得分總計
判斷 2 個矩形是否相交
分糖果問題
記錄機器人行走路徑
設計滿足小孩分餅乾的問題
賣檸檬汁找錢的問題
小細節修訂約 100 處
這是一本使用Python 從零開始指導讀者的演算法入門書籍,從基礎資料結構與演算法開始,同時解說資訊安全演算法,網頁排名演算法,人工智慧入門的KNN 和K-means 演算法,最後則精選著名的LeetCode 考題演算法。整本書的特色是彩色圖片引導演算法理論的邏輯思維與Python 實作同步解說,讓讀者可以很輕鬆掌握相關知識。
全書內容包含149 個程式實例,使用約650 張完整圖表或圖例,完整解說7 種資料結構,數十種演算法相關知識,這本書包含下列主要內容。
時間複雜度
空間複雜度
7 大資料結構完整圖說與程式實例
特別使用二元樹和堆疊解圖形解說遞迴中序、前序和後序列印
7 大排序法完整圖說與程式實例
二分搜尋與遍歷
分治法 (Divide and Conquer)
遞迴與回溯演算法
八皇后與河內塔
碎形與 VLSI 設計應用
圖形理論
深度、寬度優先搜尋
Bellman-Ford 演算法
Dijkstra's 演算法
貪婪演算法
動態規劃演算法
資訊安全演算法
摩斯與凱薩密碼
金鑰系統觀念,也解說設計金鑰方法或是應用目前市面上成熟的金鑰。
訊息鑑別碼 (Message authentication code)
數位簽章 (Digital Signature)
數位憑證 (Digital certificate)
基礎機器學習 KNN 演算法,不過讀者不用擔心這是分類與迴歸的數學或是統計問題,筆者將拋棄數學公式,用很平實語句敘述搭配程式實例,讓讀者徹底了解此演算法。
在機器學習的無監督學習中,K-means 演算法常被用來做特徵學習,筆者也將拋棄數學公式,用很平實語句敘述搭配程式實例,讓讀者徹底了解此演算法。
網頁排名演算法
常見的演算法考題與 Leetcode 考題
一本書的誕生最重要價值是有系統傳播知識,讀者可以從有系統知識架構,輕鬆、快速學會想要的知識。
寫過許多的電腦書著作,本書沿襲筆者著作的特色,程式實例豐富,相信讀者只要遵循本書內容必定可以在最短時間使用Python 精通演算法應用,編著本書雖力求完美,但是學經歷不足,謬誤難免,尚祈讀者不吝指正。
洪錦魁2022/10/10
jiinkwei@me.com