圖書信息
作者:程傑著出 版 社:清華大學出版社
出版時間:2011-6-1
版次:1
頁數:468
字數:662000
印刷時間:2011-6-1
開本:16開
紙張:膠版紙
印次:1
I S B N:9787302255659
包裝:平裝
內容簡介
本書為超級暢銷書《大話設計模式》作者程傑潛心三年推出的扛鼎之作!以一個計算機教師教學為場景,講解數據結構和相關算法的知識。通篇以一種趣味方式來敘述,大量引用了各種各樣的生活知識來類比,並充分運用圖形語言來體現抽象內容,對數據結構所涉及到的一些經典算法做到逐行分析、多算法比較。與市場上的同類數據結構圖書相比,本書內容趣味易讀,算法講解細緻深刻,是一本非常適合自學的讀物。
本書以一個計算機教師教學為場景,講解數據結構和相關算法的知識。通篇以一種趣味方式來敘述,大量引用了各種各樣的生活知識來類比,並充分運用圖形語言來體現抽象內容,對數據結構所涉及到的一些經典算法做到逐行分析、多算法比較。與市場上的同類數據結構圖書相比,本書內容趣味易讀,算法講解細緻深刻,是一本非常適合自學的讀物。
作者簡介
一個被讀者譽為很適合寫IT技術書的傢伙。《大話設計模式》作者。此書07年末出版至今已經簡體版印刷9次、繁體版印刷6次,取得了較好的成績,開創了一種適合國人閱讀的趣味講解IT知識的風格模式。其本人參與過政府、證券、遊戲、交通等多種行業的軟體開發及項目管理工作,也曾做過軟體培訓的教師。因曾有過兩年半高中數學教學的獨特經歷,使得其書作當中處處以初學者視角考慮和分析問題,他成為了當前很受歡迎的IT技術圖書作者之一。
目錄
第1章數據結構緒論
1.1開場白
1.2你數據結構怎么學的?
1.3數據結構起源
1.4基本概念和術語
1.4.1數據
1.4.2數據元素
1.4.3數據項
1.4.4數據對象
1.4.5數據結構
1.5邏輯結構與物理結構
1.5.1邏輯結構
1.5.2物理結構
1.6抽象數據類型
1.6.1數據類型
1.6.2抽象數據類型
1.7總結回顧
1.8結尾語
第2章算法
2.1開場白
2.2數據結構與算法關係
2.3兩種算法的比較
2.4算法定義
2.5算法的特性
2.5.1輸入輸出
2.5.2有窮性
2.5.3確定性
2.5.4可行性
2.6算法設計的要求
2.6.1正確性
2.6.2可讀性
2.6.3健壯性
2.6.4時間效率高和存儲量低
2.7算法效率的度量方法
2.7.1事後統計方法
2.7.2事前分析估算方法
2.8函式的漸近增長
2.9算法時間複雜度
2.9.1算法時間複雜度定義
2.9.2推導大O階方法
2.9.3常數階
2.9.4線性階
2.9.5對數階
2.9.6平方階
2.10常見的時間複雜度
2.11最壞情況與平均情況
2.12算法空間複雜度
2.13總結回顧
2.14結尾語
第3章線性表
3.1開場白
3.2線性表的定義
3.3線性表的抽象數據類型
3.4線性表的順序存儲結構
3.4.1順序存儲定義
3.4.2順序存儲方式
3.4.3數據長度與線性表長度區別
3.4.4地址計算方法
3.5順序存儲結構的插入與刪除
3.5.1獲得元素操作
3.5.2插入操作
3.5.3刪除操作
3.5.4線性表順序存儲結構的優缺點
3.6線性表的鏈式存儲結構
3.6.1順序存儲結構不足的解決辦法
3.6.2線性表鏈式存儲結構定義
3.6.3頭指針與頭結點的異同
3.6.4線性表鏈式存儲結構代碼描述
3.7單鍊表的讀取
3.8單鍊表的插入與刪除
3.8.1單鍊表的插入
3.8.2單鍊表的刪除
3.9單鍊表的整表創建
3.10單鍊表的整表刪除
3.11單鍊表結構與順序存儲結構優缺點
3.12靜態鍊表
3.12.1靜態鍊表的插入操作
3.12.2靜態鍊表的刪除操作
3.12.3靜態鍊表優缺點
3.13循環鍊表
3.14雙向鍊表
3.15總結回顧
3.16結尾語
第4章棧與佇列
4.1開場白
4.2棧的定義
4.2.1棧的定義
4.2.2進棧出棧變化形式
4.3棧的抽象數據類型
4.4棧的順序存儲結構及實現
4.4.1棧的順序存儲結構
4.4.2棧的順序存儲結構進棧操作
4.4.3棧的順序存儲結構出棧操作
4.5兩棧共享空間
4.6棧的鏈式存儲結構及實現
4.6.1棧的鏈式存儲結構
4.6.2棧的鏈式存儲結構進棧操作
4.6.3棧的鏈式存儲結構出棧操作
4.7棧的作用
4.8棧的套用--遞歸
4.8.1斐波那契數列實現
4.8.2遞歸定義
4.9棧的套用--四則運算表達式求值
4.9.1後綴(逆波蘭)表示法定義
4.9.2後綴表達式計算結果
4.9.3中綴表達式轉後綴表達式
4.10佇列的定義
4.11佇列的抽象數據類型
4.12循環佇列
4.12.1佇列順序存儲的不足
4.12.2循環佇列定義
4.13佇列的鏈式存儲結構及實現
4.13.1佇列鏈式存儲結構入隊操作
4.13.2佇列鏈式存儲結構出隊操作
4.14總結回顧
4.15結尾語
第5章串
5.1開場白
05.2串的定義
5.3串的比較
5.4串的抽象數據類型
5.5串的存儲結構
5.5.1串的順序存儲結構
5.5.2串的鏈式存儲結構
5.6樸素的模式匹配算法
5.7KMP模式匹配算法
5.7.1KMP模式匹配算法原理
5.7.2next數組值推導
5.7.3KMP模式匹配算法實現
5.7.4KMP模式匹配算法改進
5.7.5nextval數組值推導
5.8總結回顧
5.9結尾語
第6章樹
6.1開場白
6.2樹的定義
6.2.1結點分類
6.2.2結點間關係
6.2.3樹的其他相關概念
6.3樹的抽象數據類型
6.4樹的存儲結構
6.4.1雙親表示法
6.4.2孩子表示法
6.4.3孩子兄弟表示法
6.5二叉樹的定義
6.5.1二叉樹特點
6.5.2特殊二叉樹
6.6二叉樹的性質
6.6.1二叉樹性質1
6.6.2二叉樹性質2
6.6.3二叉樹性質3
6.6.4二叉樹性質4
6.6.5二叉樹性質5
6.7二叉樹的存儲結構
6.7.1二叉樹順序存儲結構
6.7.2二叉鍊表
6.8遍歷二叉樹
6.8.1二叉樹遍歷原理
6.8.2二叉樹遍歷方法
6.8.3前序遍歷算法
6.8.4中序遍歷算法
6.8.5後序遍歷算法
6.8.6推導遍歷結果
6.9二叉樹的建立
6.10線索二叉樹
6.10.1線索二叉樹原理
6.10.2線索二叉樹結構實現
6.11樹、森林與二叉樹的轉換
6.11.1樹轉換為二叉樹
6.11.2森林轉換為二叉樹
6.11.3二叉樹轉換為樹
6.11.4二叉樹轉換為森林
6.11.5樹與森林的遍歷
6.12赫夫曼樹及其套用
6.12.1赫夫曼樹
6.12.2赫夫曼樹定義與原理
6.12.3赫夫曼編碼
6.13總結回顧
6.14結尾語
第7章圖
7.1開場白
7.2圖的定義
7.2.1各種圖定義
7.2.2圖的頂點與邊間關係
7.2.3連通圖相關術語
7.2.4圖的定義與術語總結
7.3圖的抽象數據類型
7.4圖的存儲結構
7.4.1鄰接矩陣
7.4.2鄰接表
7.4.3十字鍊表
7.4.4鄰接多重表
7.4.5邊集數組
7.5圖的遍歷
7.5.1深度優先遍歷
7.5.2廣度優先遍歷
7.6最小生成樹
7.6.1普里姆(Prim)算法
7.6.2克魯斯卡爾(Kruskal)算法
7.7最短路徑
7.7.1迪傑斯特拉(Dijkstra)算法
7.7.2弗洛伊德(Floyd)算法
7.8拓撲排序
7.8.1拓撲排序介紹
7.8.2拓撲排序算法
7.9關鍵路徑
7.9.1關鍵路徑算法原理
7.9.2關鍵路徑算法
7.10總結回顧
7.11結尾語
第8章查找
8.1開場白
8.2查找概論
8.3順序表查找
8.3.1順序表查找算法
8.3.2順序表查找最佳化
8.4有序表查找
8.4.1折半查找
8.4.2插值查找
8.4.3斐波那契查找
8.5線性索引查找
8.5.1稠密索引
8.5.2分塊索引
8.5.3倒排索引
8.6二叉排序樹
8.6.1二叉排序樹查找操作
8.6.2二叉排序樹插入操作
8.6.3二叉排序樹刪除操作
8.6.4二叉排序樹總結
8.7平衡二叉樹(AVL樹)
8.7.1平衡二叉樹實現原理
8.7.2平衡二叉樹實現算法
8.8多路查找樹(B樹)
8.8.12-3樹
8.8.22-3-4樹
8.8.3B樹
8.8.4B+樹
8.9散列表查找(哈希表)概述
8.9.1散列表查找定義
8.9.2散列表查找步驟
8.10散列函式的構造方法
8.10.1直接定址法
8.10.2數字分析法
8.10.3平方取中法
8.10.4摺疊法
8.10.5除留餘數法
8.10.6隨機數法
8.11處理散列衝突的方法
8.11.1開放定址法
8.11.2再散列函式法
8.11.3鏈地址法
8.11.4公共溢出區法
8.12散列表查找實現
8.12.1散列表查找算法實現
8.12.2散列表查找性能分析
8.13總結回顧
8.14結尾語
第9章排序
9.1開場白
9.2排序的基本概念與分類
9.2.1排序的穩定性
9.2.2內排序與外排序
9.2.3排序用到的結構與函式
9.3冒泡排序
9.3.1最簡單排序實現
9.3.2冒泡排序算法
9.3.3冒泡排序最佳化
9.3.4冒泡排序複雜度分析
9.4簡單選擇排序
9.4.1簡單選擇排序算法
9.4.2簡單選擇排序複雜度分析
9.5直接插入排序
9.5.1直接插入排序算法
9.5.2直接插入排序複雜度分析
9.6希爾排序
9.6.1希爾排序原理
9.6.2希爾排序算法
9.6.3希爾排序複雜度分析
9.7堆排序
9.7.1堆排序算法
9.7.2堆排序複雜度分析
9.8歸併排序
9.8.1歸併排序算法
9.8.2歸併排序複雜度分析
9.8.3非遞歸實現歸併排序
9.9快速排序
9.9.1快速排序算法
9.9.2快速排序複雜度分析
9.9.3快速排序最佳化
1.最佳化選取樞軸
2.最佳化不必要的交換
3.最佳化小數組時的排序方案
4.最佳化遞歸操作
9.10總結回顧
9.11結尾語
附錄參考文獻
名人推薦
超級暢銷書《大話設計模式》作者的新作!用戶群更為廣泛,寫作風格一如既往,技術沉澱更加深厚,勢必掀起全民數據結構的熱潮!
盤點有關算法書籍
算法可以理解為有基本運算及規定的運算順序所構成的完整的解題步驟。或者看成按照要求設計好的有限的確切的計算序列,並且這樣的步驟和序列可以解決一類問題。 |