算法學習指南
徐波 譯
出版時間:2022年09月
頁數(shù):222
“本書將會講述計算機科學中的基本算法和數(shù)據(jù)結(jié)構(gòu),幫助讀者編寫更加高效的代碼。如果讀者正在尋找一份需要編程技巧的技術型工作,本書有可能幫助其在面試中表現(xiàn)優(yōu)異?!?br />
——Zvi Galil
佐治亞理工學院、計算機系榮譽主任
在編寫代碼時,每位軟件專業(yè)人士都需要對算法有充分的理解。在這本實用性極強的著作中,作者對一些關鍵的算法進行了詳實的描述,可以有效地提高用各種語言編寫代碼的質(zhì)量。軟件開發(fā)人員、測試人員和維護人員可以在本書中學會如何使用算法,以創(chuàng)造性的方式解決計算性問題。
本書各章內(nèi)容前后銜接緊密,環(huán)環(huán)相扣,用醒目的圖表有條不紊地展示了一些核心概念,并對書中介紹的每種算法的性能進行了分析。在每一章的最后,讀者需要應用在該章所學習的知識,解決一個新穎的具有挑戰(zhàn)性的問題,就像在參加技術面試。
在本書中,讀者將會:
● 學習計算機科學和軟件工程中非常重要且基本的算法;
● 學習高效解決問題的常用策略,包括分治法、動態(tài)規(guī)劃等;
● 使用大O表示法對代碼進行分析,評估它的時間復雜度;
● 在算法中使用現(xiàn)有的Python程序庫和數(shù)據(jù)結(jié)構(gòu)解決問題;
● 理解重要算法的主要步驟。
- 第1章 解決問題
- 學習目標
- 1.1 什么是算法?
- 1.2 在一個任意的列表中查找最大值
- 1.3 對關鍵操作進行計數(shù)
- 1.4 可以預測算法性能的模型
- 1.5 在一個隨機列表中查找兩個最大值
- 1.6 錦標賽算法
- 1.7 時間復雜度和空間復雜度
- 1.8 總結(jié)
- 1.9 挑戰(zhàn)練習
- 第2章 分析算法
- 學習目標
- 2.1 使用實驗模型預測性能
- 2.2 乘法可以更快
- 2.3 性能分類
- 2.4 漸進性分析
- 2.5 對所有操作進行計數(shù)
- 2.6 對所有字節(jié)進行計數(shù)
- 2.7 關上一扇門,打開另一扇門
- 2.8 二分數(shù)組搜索
- 2.9 幾乎和π一樣簡單
- 2.10 一石二鳥
- 2.11 綜述
- 2.12 曲線擬合與上下界的比較
- 2.13 總結(jié)
- 2.14 挑戰(zhàn)練習
- 第3章 更好的散列,更適意的人生
- 學習目標
- 3.1 值與鍵相關聯(lián)
- 3.2 散列函數(shù)和散列碼
- 3.3 (key,value)對的可散列結(jié)構(gòu)
- 3.4 使用線性探查法檢測和解決沖突
- 3.5 用鏈表實現(xiàn)分離鏈表
- 3.6 從鏈表中刪除一個數(shù)據(jù)項
- 3.7 評估
- 3.8 增長的散列表
- 3.9 分析動態(tài)散列表的性能
- 3.10 完美散列
- 3.11 對(key, value)對進行迭代
- 3.12 總結(jié)
- 3.13 挑戰(zhàn)練習
- 第4章 堆起來!
- 學習目標
- 4.1 最大二叉堆
- 4.2 插入(value, priority)對
- 4.3 刪除具有最高優(yōu)先級的值
- 4.4 用數(shù)組表示二叉堆
- 4.5 實現(xiàn)上游和下沉
- 4.6 總結(jié)
- 4.7 挑戰(zhàn)練習
- 第5章 深入淺出論排序!
- 學習目標
- 5.1 交換排序
- 5.2 選擇排序
- 5.3 平方時間級排序算法的剖析
- 5.4 分析插入排序和選擇排序的性能
- 5.5 遞歸和分治法
- 5.6 歸并排序
- 5.7 快速排序
- 5.8 堆排序
- 5.9 O(NlogN)等級算法的性能比較
- 5.10 Tim排序
- 5.11 總結(jié)
- 5.12 挑戰(zhàn)練習
- 第6章 二叉樹:掌上世界的無限可能
- 學習目標
- 6.1 基礎知識
- 6.2 二叉查找樹
- 6.3 在二叉查找樹中搜索值
- 6.4 從二叉查找樹刪除值
- 6.5 遍歷二叉樹
- 6.6 分析二叉查找樹的性能
- 6.7 平衡二叉樹
- 6.8 分析平衡二叉樹的性能
- 6.9 使用二叉樹作為(key,value)符號表
- 6.10 使用二叉樹作為優(yōu)先隊列
- 6.11 總結(jié)
- 6.12 挑戰(zhàn)練習
- 第7章 圖:連得上的才是好的!
- 學習目標
- 7.1 圖高效地存儲了實用的信息
- 7.2 使用深度優(yōu)先搜索解決迷宮問題
- 7.3 廣度優(yōu)先搜索提供了一種不同的搜索算法
- 7.4 有向圖
- 7.5 具有邊權(quán)重的圖
- 7.6 迪杰斯特拉算法
- 7.7 全頂點對的最短路徑
- 7.8 Floyd-Warshall算法
- 7.9 總結(jié)
- 7.10 挑戰(zhàn)練習
- 第8章 綜述
- 學習目標
- 8.1 Python的內(nèi)置數(shù)據(jù)類型
- 8.2 在Python中實現(xiàn)堆棧
- 8.3 在Python中實現(xiàn)隊列
- 8.4 堆和優(yōu)先隊列的實現(xiàn)
- 8.5 進一步的探索
書名:算法學習指南
譯者:徐波 譯
國內(nèi)出版社:人民郵電出版社
出版時間:2022年09月
頁數(shù):222
書號:978-7-115-59244-6
原版書書名:Learning Algorithms
原版書出版商:O'Reilly Media
George T. Heineman
George T. Heineman是一位計算機科學系的教授,在軟件工程和算法領域有超過20年的教學經(jīng)驗。他是《算法技術手冊》(第2版)的作者,也是很多O’Reily視頻培訓課程的講師。
George T. Heineman is an associate professor of computer science at Worcester Polytechnic Institute. His research interests are in software engineering. He coedited the 2001 book Component-Based Software Engineering: Putting the Pieces Together (Addison-Wesley). George was the program chair for the 2005 International Symposium on Component-Based Software Engineering.