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