數據結構與算法分析(C++版)(第三版)
內容描述
本書採用程序員偏愛的面向對象C++語言來描述數據結構和算法,並把數據結構原理和算法分析技術有機地結合在一起,系統地介紹了各種類型的數據結構,以及排序和檢索的各種方法。作者非常註意對每一種數據結構的不同存儲方法及有關算法進行分析比較。書中還引入了一些比較高級的數據結構與先進的算法分析技術,並介紹了可計算性理論的一般知識。書中分別給出了C++實現方法和偽碼實現方法,便於讀者根據情況選擇。在作者維護的網站可下載相關代碼、編程項目和輔助練習資料。本書已根據作者在網站提供的勘誤表進行過內容更正。
目錄大綱
第一部分 預備知識
第1章 數據結構和算法
1.1 數據結構的原則
1.2 抽像數據類型和數據結構
1.3 設計模式
1.4 問題、算法和程序
1.5 深入學習導讀
1.6 習題
第2章 數學預備知識
2.1 集合和關係
2.2 常用數學術語
2.3 對數
2.4 級數求和與遞歸
2.5 遞歸
2.6 數學證明方法
2.7 估計
2.8 深入學習導讀
2.9 習題
第3章 算法分析
3.1 概述
3.2 最佳、最差和平均情況
3.3 換一台更快的計算機,還是換一種更快的算法
3.4 漸近分析
3.5 程序運行時間的計算
3.6 問題的分析
3.7 容易混淆的概念
3.8 多參數問題
3.9 空間代價
3.10 加速你的程序
3.11 實證分析
3.12 深入學習導讀
3.13 習題
3.14 項目設計
第二部分 基本數據結構
第4章 線性表、棧和隊列
4.1 線性表
4.2 棧
4.3 隊列
4.4 字典
4.5 深入學習導讀
4.6 習題
4.7 項目設計
第5章 二叉樹
5.1 定義及主要特性
5.2 遍歷二叉樹
5.3 二叉樹的實現
5.4 二叉檢索樹
5.5 堆與優先隊列
5.6 Huffman編碼樹
5.7 深入學習導讀
5.8 習題
5.9 項目設計
第6章 樹
6.1 樹的定義與術語
6.2 父指針表示法
6.3 樹的實現
6.4 K叉樹
6.5 樹的順序表示法
6.6 深入學習導讀
6.7 習題
6.8 項目設計
第三部分 排序與檢索
第7章 內排序
7.1 排序術語及記號
7.2 三種代價為Θ(n2)的排序算法
7.3 Shell排序
7.4 歸併排序
7.5 快速排序
7.6 堆排序
7.7 分配排序和基數排序
7.8 對各種排序算法的實驗比較
7.9 排序問題的下限
7.10 深入學習導讀
7.11 習題
7.12 項目設計
第8章 文件管理和外排序
8.1 主存儲器和輔助存儲器
8.2 磁盤
8.3 緩衝區和緩衝池
8.4 程序員的文件視圖
8.5 外排序
8.6 深入學習導讀
8.7 習題
8.8 項目設計
第9章 檢索
9.1 檢索未排序和已排序的數組
9.2 自組織線性表
9.3 集合檢索
9.4 散列方法
9.5 深入學習導讀
9.6 習題
9.7 項目設計
第10章 索引技術
10.1 線性索引
10.2 ISAM
10.3 基於樹的索引
10.4 2-3樹
10.5 B樹
10.6 深入學習導讀
10.7 習題
10.8 項目設計
第四部分 高級數據結構
第11章 圖
11.1 術語和表示法
11.2 圖的實現
11.3 圖的遍歷
11.4 最短路徑問題
11.5 最小支撐樹
11.6 深入學習導讀
11.7 習題
11.8 項目設計
第12章 線性表和數組高級技術
12.1 廣義表
12.2 矩陣的表示方法
12.3 存儲管理
12.4 深入學習導讀
12.5 習題
12.6 項目設計
第13章 高級樹結構
13.1 Trie結構
13.2 平衡樹
13.3 空間數據結構
13.4 深入學習導讀
13.5 習題
13.6 項目設計
第五部分 算法理論
第14章 分析技術
14.1 求和技術
14.2 遞歸關係
14.3 均攤分析
14.4 深入學習導讀
14.5 習題
14.6 項目設計
第15章 下限
15.1 下限證明簡介
15.2 線性表檢索的下限
15.3 查找最大值
15.4 對抗性下限證明
15.5 狀態空間下限證明
15.6 查找第i大元素
15.7 優化排序
15.8 深入學習導讀
15.9 習題
15.10 項目設計
第16章 算法模式
16.1 動態規劃
16.2 隨機算法
16.3 數值算法
16.4 深入學習導讀
16.5 習題
16.6 項目設計
第17章 計算的限制
17.1 歸約
17.2 難解問題
17.3 不可解問題
17.4 深入學習導讀
17.5 習題
17.6 項目設計
第六部分 附錄
附錄A 實用函數
參考文獻
詞彙表
作者介紹
Cliff A.Shaffer(克利福德 ・ A. 謝弗)在美國馬里蘭大學獲得學士、碩士和博士學位,現在在弗吉尼亞理工大學計算機科學系擔任教授,主要講授問題求解、數據結構與算法分析、算法理論等課程,積累了豐富的教學經驗,並出版了多部著作。
Clifford A. Shaffer教授於美國馬里蘭大學獲得計算機科學博士學位,在弗吉尼亞理工大學計算機科學系任教超過30年,具有豐富的教學經驗,並參與遺傳學、生物信息學和計算生物學等交叉項目。著有多本數據結構和算法分析的教材。