內容簡介
「一本平易近人的著作,可讓你立即應用進而提升程式的執行效率。書中將教你電腦科學中會用到的基本演算法和資料型別。如果你正在找一份程式設計相關的技術工作,這本書可能會在下次的程式面試中幫助你取得好成績。」
— Zvi Galil喬治亞理工學院計算學院Frederick G. Storey主任暨名譽院長
論及撰寫有效率的程式時,每位軟體專業人士都需要具備有效率的演算法運作知識。在這本實務書籍中,《Algorithms in a Nutshell》作者George Heineman對於多種語言編寫程式時所用的效能改進關鍵演算法,有簡潔而詳實的介紹。軟體開發人員、測試人員、維護人員將理解演算法如何創造性地解決運算問題。
每章都會以前面章節內容為基礎,藉由清晰的圖示和不斷提供的新基本概念,包括演算法分析,對書中介紹的每個演算法做效能分級。你可以將每章所學到的內容,應用到該章最後的挑戰題中,如同模擬在程式術科面試場上的體驗。
閱讀本書,你將可以:
‧探索電腦科學和軟體工程核心的基本演算法
‧學習有效率解決問題的常見策略,例如:分治法、動態規劃、貪婪方法
‧使用Big-O分析與評估程式的時間複雜度
‧使用現有的Python函式庫和資料結構來解決演算法問題
‧了解重要演算法的主要步驟
— Zvi Galil喬治亞理工學院計算學院Frederick G. Storey主任暨名譽院長
論及撰寫有效率的程式時,每位軟體專業人士都需要具備有效率的演算法運作知識。在這本實務書籍中,《Algorithms in a Nutshell》作者George Heineman對於多種語言編寫程式時所用的效能改進關鍵演算法,有簡潔而詳實的介紹。軟體開發人員、測試人員、維護人員將理解演算法如何創造性地解決運算問題。
每章都會以前面章節內容為基礎,藉由清晰的圖示和不斷提供的新基本概念,包括演算法分析,對書中介紹的每個演算法做效能分級。你可以將每章所學到的內容,應用到該章最後的挑戰題中,如同模擬在程式術科面試場上的體驗。
閱讀本書,你將可以:
‧探索電腦科學和軟體工程核心的基本演算法
‧學習有效率解決問題的常見策略,例如:分治法、動態規劃、貪婪方法
‧使用Big-O分析與評估程式的時間複雜度
‧使用現有的Python函式庫和資料結構來解決演算法問題
‧了解重要演算法的主要步驟
內容目錄
第一章 解決問題
何謂演算法?
找出任一串列的最大值
計數關鍵作業
能夠預測演算法效能的模型
找出任一串列的前兩大值
錦標賽演算法
時間複雜度與空間複雜度
本章總結
挑戰題
第二章 演算法分析
以實證模型預測效能
更快的乘法
效能等級
漸近分析
計數所有作業
計數所有位元組
命運之門
二元陣列搜尋
跟π一樣簡單
一舉兩得
整體而言
曲線配適與上限下限
本章總結
挑戰題
第三章 用好雜湊過好生活
值與鍵的關聯
雜湊函式與雜湊值
(鍵 值)組的雜湊表結構
以線性探測察覺與解決衝突
分別鏈結的鏈結串列
移除鏈結串列的項目
評估
擴充雜湊表
動態雜湊表的效能分析
完美雜湊
疊代處理(鍵 值)組
本章總結
挑戰題
第四章 堆積向上
最大二元堆積
插入(值 優先序)
移除優先序最高的值
以陣列表示二元堆積
swim與sink的實作
本章總結
挑戰題
第五章 無魔法的奇妙排序
用交換做排序
選擇排序
二次等級排序演算法的剖析
插入排序與選擇排序的效能分析
遞迴與分治法
合併排序
快速排序
堆積排序
O(N log N)等級演算法的效能比較
Tim 排序
本章總結
挑戰題
第六章 二元樹∼掌握無限
開場
二元搜尋樹
搜尋二元搜尋樹內容值
移除二元搜尋樹內容值
遍歷二元搜尋樹
二元搜尋樹的效能分析
自平衡二元搜尋樹
自平衡二元樹的效能分析
以二元樹實作(鍵, 值)符號表
以二元樹實作優先佇列
本章總結
挑戰題
第七章 圖∼盡在連結
有效率的以圖儲存有用資訊
以深度優先搜尋解開迷宮
採取不同策略的廣度優先搜尋
有向圖
具邊權重的圖
Dijkstra演算法
全點對最短路徑
Floyd-Warshall演算法
本章總結
挑戰題
第八章 本書總結
Python內建資料結構
以Python實作堆疊
以Python實作佇列
堆積與優先佇列的實作
後續的探索
何謂演算法?
找出任一串列的最大值
計數關鍵作業
能夠預測演算法效能的模型
找出任一串列的前兩大值
錦標賽演算法
時間複雜度與空間複雜度
本章總結
挑戰題
第二章 演算法分析
以實證模型預測效能
更快的乘法
效能等級
漸近分析
計數所有作業
計數所有位元組
命運之門
二元陣列搜尋
跟π一樣簡單
一舉兩得
整體而言
曲線配適與上限下限
本章總結
挑戰題
第三章 用好雜湊過好生活
值與鍵的關聯
雜湊函式與雜湊值
(鍵 值)組的雜湊表結構
以線性探測察覺與解決衝突
分別鏈結的鏈結串列
移除鏈結串列的項目
評估
擴充雜湊表
動態雜湊表的效能分析
完美雜湊
疊代處理(鍵 值)組
本章總結
挑戰題
第四章 堆積向上
最大二元堆積
插入(值 優先序)
移除優先序最高的值
以陣列表示二元堆積
swim與sink的實作
本章總結
挑戰題
第五章 無魔法的奇妙排序
用交換做排序
選擇排序
二次等級排序演算法的剖析
插入排序與選擇排序的效能分析
遞迴與分治法
合併排序
快速排序
堆積排序
O(N log N)等級演算法的效能比較
Tim 排序
本章總結
挑戰題
第六章 二元樹∼掌握無限
開場
二元搜尋樹
搜尋二元搜尋樹內容值
移除二元搜尋樹內容值
遍歷二元搜尋樹
二元搜尋樹的效能分析
自平衡二元搜尋樹
自平衡二元樹的效能分析
以二元樹實作(鍵, 值)符號表
以二元樹實作優先佇列
本章總結
挑戰題
第七章 圖∼盡在連結
有效率的以圖儲存有用資訊
以深度優先搜尋解開迷宮
採取不同策略的廣度優先搜尋
有向圖
具邊權重的圖
Dijkstra演算法
全點對最短路徑
Floyd-Warshall演算法
本章總結
挑戰題
第八章 本書總結
Python內建資料結構
以Python實作堆疊
以Python實作佇列
堆積與優先佇列的實作
後續的探索
ISBN: 9786263241749