數據結構與算法分析

馮舜璽

相關主題

商品描述

本書原書是數據結構與算法分析方面的經典教材,介紹了數據結構(大量數據的組織方法)以及算法分析(算法運行時間的估算)。內容系統全面,結構清晰,章節安排合理,從基礎概念到 應用逐步深入,並且註重理論與實踐結合。通過C程序實現闡述抽象概念,配上豐富的實例和習題, 有助於讀者理解和鞏固知識。本書的編寫目標是同時講授好的程序設計和算法分析技巧,使讀者可以開發出高效的程序。本書可作為 數據結構課程或研究生一年級算法分析課程的教材,也可以作為專業人員或者研究人員設計算法時的參考。

作者簡介

詹姆斯·F.庫羅斯(James F. Kurose),美國馬薩諸塞大學阿默斯特分校計算機科學系教授,研究興趣包括網絡協議和體系結構、網絡測量、多媒體通信以及建模和性能評價。由於在教育領域的傑出貢獻,他獲得了包括IEEE Taylor Booth教育獎章在內的多個教育獎勵和榮譽。他是IEEE和ACM會士,還曾擔任《IEEE通信會刊》和《IEEE/ACM網絡會刊》總編輯。

目錄大綱

譯者序
前言
第1章 引論
1.1 本書討論的內容
1.2 數學知識覆習
1.2.1 指數
1.2.2 對數
1.2.3 級數
1.2.4 模運算
1.2.5 證明方法
1.3 遞歸簡論
總結
練習
參考文獻
第2章 算法分析
2.1 數學基礎
2.2 模型
2.3 要分析的問題
2.4 運行時間計算
2.4.1 一個簡單的例子
2.4.2 一般法則
2.4.3 最大子序列和
2.4.4 運行時間中的對數
2.4.5 檢驗你的分析
2.4.6 分析結果的準確性
總結
練習
參考文獻
第3章 表、棧和隊列
3.1 抽象數據類型
3.2 表ADT
3.2.1 表的簡單數組實現
3.2.2 鏈表
3.2.3 程序設計細節
3.2.4 常見的錯誤
3.2.5 雙鏈表
3.2.6 循環鏈表
3.2.7 例子
3.2.8 鏈表的遊標實現
3.3 棧ADT
3.3.1 棧模型
3.3.2 棧的實現
3.3.3 應用
3.4 隊列ADT
3.4.1 隊列模型
3.4.2 隊列的數組實現
3.4.3 隊列的應用
總結
練習
第4章 樹
4.1 預備知識
4.1.1 樹的實現
4.1.2 樹的遍歷及應用
4.2 二叉樹
4.2.1 實現
4.2.2 表達式樹
4.3 查找樹ADT——二叉查找樹
4.3.1 MakeEmpty
4.3.2 Find
4.3.3 FindMin和FindMax
4.3.4 Insert
4.3.5 Delete
4.3.6 平均情形分析
4.4 AVL樹
4.4.1 單旋轉
4.4.2 雙旋轉
4.5 伸展樹
4.5.1 一個簡單的想法
4.5.2 展開
4.6 樹的遍歷
4.7 B樹
總結
練習
參考文獻
第5章 散列
5.1 一般想法
5.2 散列函數
5.3 分離鏈接法
5.4 開放定址法
5.4.1 線性探測法
5.4.2 平方探測法
5.4.3 雙散列
5.5 再散列
5.6 可擴散列
總結
練習
參考文獻
第6章 優先隊列(堆)
6.1 模型
6.2 一些簡單的實現
6.3 二叉堆
6.3.1 結構性質
6.3.2 堆序性質
6.3.3 基本的堆操作
6.3.4 其他的堆操作
6.4 優先隊列的應用
6.4.1 選擇問題
6.4.2 事件模擬
6.5 d-堆
6.6 左式堆
6.6.1 左式堆的性質
6.6.2 左式堆的操作
6.7 斜堆
6.8 二項隊列
6.8.1 二項隊列結構
6.8.2 二項隊列操作
6.8.3 二項隊列的實現
總結
練習
參考文獻
第7章 排序
7.1 預備知識
7.2 插入排序
7.2.1 算法
7.2.2 插入排序的分析
7.3 一些簡單排序算法的下界
7.4 希爾排序
7.5 堆排序
7.6 歸並排序
7.7 快速排序
7.7.1 選取樞紐元
7.7.2 分割策略
7.7.3 小數組
7.7.4 實際的快速排序例程
7.7.5 快速排序的分析
7.7.6 選擇的線性期望時間算法
7.8 大型結構的排序
7.9 排序的一般下界
7.10 桶式排序
7.11 外部排序
7.11.1 為什麼需要新的算法
7.11.2 外部排序模型
7.11.3 簡單算法
7.11.4 多路合並
7.11.5 多相合並
7.11.6 替換選擇
總結
練習
參考文獻
第8章 不相交集ADT
8.1 等價關系
8.2 動態等價性問題
8.3 基本數據結構
8.4 靈巧求並算法
8.5 路徑壓縮
8.6 按秩求並和路徑壓縮的最壞情形
8.7 一個應用
總結
練習
參考文獻
第9章 圖論算法
9.1 若幹定義
9.2 拓撲排序
9.3 最短路徑算法
9.3.1 無權最短路徑
9.3.2 Dijkstra算法
9.3.3 具有負邊值的圖
9.3.4 無圈圖
9.3.5 所有點對最短路徑
9.4 網絡流問題
9.5 最小生成樹
9.5.1 Prim算法
9.5.2 Kruskal算法
9.6 深度優先搜索的應用
9.6.1 無向圖
9.6.2 雙連通性
9.6.3 歐拉回路
9.6.4 有向圖
9.6.5 查找強分支
9.7 NP-完全性介紹
9.7.1 難與易
9.7.2 NP類
9.7.3 NP-完全問題
總結
練習
參考文獻
第10章 算法設計技巧
10.1 貪婪算法
10.1.1 一個簡單的調度問題
10.1.2 Huffman編碼
10.1.3 近似裝箱問題
10.2 分治算法
10.2.1 分治算法的運行時間
10.2.2 最近點問題
10.2.3 選擇問題
10.2.4 一些運算問題的理論改進
10.3 動態規劃
10.3.1 用一個代表替遞歸
10.3.2 矩陣乘法的順序安排
10.3.3 最優二叉查找樹
10.3.4 所有點對最短路徑
10.4 隨機化算法
10.4.1 隨機數發生器
10.4.2 跳躍表
10.4.3 素性測試
10.5 回溯算法
10.5.1 收費公路重建問題
10.5.2 博弈
總結
練習
參考文獻
第11章 攤還分析
11.1 一個無關的智力問題
11.2 二項隊列
11.3 斜堆
11.4 斐波那契堆