數(shù)據(jù)結(jié)構(gòu)與算法JavaScript描述
定 價(jià):49 元
叢書名:圖靈程序設(shè)計(jì)叢書
- 作者:[美] Michael,McMillan
- 出版時(shí)間:2014/8/1
- ISBN:9787115363398
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.12
- 頁碼:200
- 紙張:膠版紙
- 版次:1
- 開本:16K
在過去幾年中,JavaScript憑借Node.js和SpiderMonkey等平臺(tái),在服務(wù)器端編程中得到了廣泛應(yīng)用。JavaScript程序員因而迫切需要使用傳統(tǒng)語言(比如C++和Java)提供的工具,包括傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)以及傳統(tǒng)的排序和查找算法。《數(shù)據(jù)結(jié)構(gòu)與算法JavaScript描述》討論在數(shù)組即對象、無處不在的全局變量、基于原型的對象模型等JavaScript語言的環(huán)境下,如何實(shí)現(xiàn)高效的數(shù)據(jù)結(jié)構(gòu)和算法。
《數(shù)據(jù)結(jié)構(gòu)與算法JavaScript描述》適合JavaScript程序員以及對JavaScript語言感興趣的學(xué)習(xí)者,特別是在學(xué)校中沒有系統(tǒng)學(xué)習(xí)過計(jì)算機(jī)科學(xué)相關(guān)課程的“跨界”程序員。
隨著JavaScript成功走出客戶端,在服務(wù)器端編程中得到日益廣泛的應(yīng)用,JavaScript程序員需要實(shí)現(xiàn)與C#或Java等傳統(tǒng)面向?qū)ο缶幊陶Z言相似的數(shù)據(jù)結(jié)構(gòu)與算法。本書是用JavaScript描述數(shù)據(jù)結(jié)構(gòu)與算法的開山之作,匯聚了作者多年的實(shí)戰(zhàn)經(jīng)驗(yàn)。這本實(shí)戰(zhàn)指南通過豐富的示例,向讀者透徹講解了在JavaScript環(huán)境下,如何通過一系列存儲(chǔ)機(jī)制(包括鏈表、棧、隊(duì)列和圖)高效地達(dá)到編程目的。
Michael McMillan作為大學(xué)老師和程序員,曾編寫過多部受到好評的數(shù)據(jù)結(jié)構(gòu)與算法圖書,包括Data Structures and Algorithms Using C#、Data Structures and Algorithms Using Visual Basic.NET,以及其他計(jì)算機(jī)教程,如Object-Oriented Programming with Visual Basic.NET、C Programming: An Introduction or A Clear and Concise Introduction to C Programming For the Beginner、Java Programming Tutorial、Perl from the Ground Up等。Michael現(xiàn)在阿肯色州北小石城普瓦斯基技術(shù)學(xué)院當(dāng)講師,教授計(jì)算機(jī)信息系統(tǒng)。他還是北小石城阿肯色大學(xué)的兼職講師,教授信息科學(xué)。在做講師之前,他曾是阿肯色兒童醫(yī)院的一名程序設(shè)計(jì)師/分析師,負(fù)責(zé)統(tǒng)計(jì)計(jì)算和數(shù)據(jù)分析。
推薦序 XI
前言 XII
第1章 JavaScript的編程環(huán)境和模型 1
1.1 JavaScript環(huán)境 1
1.2 JavaScript編程實(shí)踐 2
1.2.1 聲明和初始化變量 3
1.2.2 JavaScript中的算術(shù)運(yùn)算和數(shù)學(xué)庫函數(shù) 3
1.2.3 判斷結(jié)構(gòu) 4
1.2.4 循環(huán)結(jié)構(gòu) 6
1.2.5 函數(shù) 7
1.2.6 變量作用域 7
1.2.7 遞歸 9
1.3 對象和面向?qū)ο缶幊獭?0
1.4 小結(jié) 11
第2章 數(shù)組 13
2.1 JavaScript中對數(shù)組的定義 13
2.2 使用數(shù)組 13
2.2.1 創(chuàng)建數(shù)組 14
2.2.2 讀寫數(shù)組 15
2.2.3 由字符串生成數(shù)組 15
2.2.4 對數(shù)組的整體性操作 16
2.3 存取函數(shù) 17
2.3.1 查找元素 17
2.3.2 數(shù)組的字符串表示 18
2.3.3 由已有數(shù)組創(chuàng)建新數(shù)組 18
2.4 可變函數(shù) 19
2.4.1 為數(shù)組添加元素 19
2.4.2 從數(shù)組中刪除元素 20
2.4.3 從數(shù)組中間位置添加和刪除元素 21
2.4.4 為數(shù)組排序 21
2.5 迭代器方法 22
2.5.1 不生成新數(shù)組的迭代器方法 22
2.5.2 生成新數(shù)組的迭代器方法 25
2.6 二維和多維數(shù)組 27
2.6.1 創(chuàng)建二維數(shù)組 27
2.6.2 處理二維數(shù)組的元素 28
2.6.3 參差不齊的數(shù)組 29
2.7 對象數(shù)組 30
2.8 對象中的數(shù)組 31
2.9 練習(xí) 32
第3章 列表 33
3.1 列表的抽象數(shù)據(jù)類型定義 33
3.2 實(shí)現(xiàn)列表類 34
3.2.1 append:給列表添加元素 35
3.2.2 remove:從列表中刪除元素 35
3.2.3 find:在列表中查找某一元素 35
3.2.4 length:列表中有多少個(gè)元素 36
3.2.5 toString:顯示列表中的元素 36
3.2.6 insert:向列表中插入一個(gè)元素 37
3.2.7 clear:清空列表中所有的元素 37
3.2.8 contains:判斷給定值是否在列表中 37
3.2.9 遍歷列表 38
3.3 使用迭代器訪問列表 39
3.4 一個(gè)基于列表的應(yīng)用 40
3.4.1 讀取文本文件 40
3.4.2 使用列表管理影碟租賃 41
3.5 練習(xí) 44
第4章 !45
4.1 對棧的操作 45
4.2 棧的實(shí)現(xiàn) 46
4.3 使用Stack類 48
4.3.1 數(shù)制間的相互轉(zhuǎn)換 49
4.3.2 回文 50
4.3.3 遞歸演示 51
4.4 練習(xí) 52
第5章 隊(duì)列 53
5.1 對隊(duì)列的操作 53
5.2 一個(gè)用數(shù)組實(shí)現(xiàn)的隊(duì)列 54
5.3 使用隊(duì)列:方塊舞的舞伴分配問題 57
5.4 使用隊(duì)列對數(shù)據(jù)進(jìn)行排序 61
5.5 優(yōu)先隊(duì)列 63
5.6 練習(xí) 65
第6章 鏈表 67
6.1 數(shù)組的缺點(diǎn) 67
6.2 定義鏈表 67
6.3 設(shè)計(jì)一個(gè)基于對象的鏈表 69
6.3.1 Node類 69
6.3.2 LinkedList類 69
6.3.3 插入新節(jié)點(diǎn) 69
6.3.4 從鏈表中刪除一個(gè)節(jié)點(diǎn) 71
6.4 雙向鏈表 74
6.5 循環(huán)鏈表 78
6.6 鏈表的其他方法 79
6.7 練習(xí) 79
第7章 字典 81
7.1 Dictionary類 81
7.2 Dictionary類的輔助方法 83
7.3 為Dictionary類添加排序功能 85
7.4 練習(xí) 86
第8章 散列 87
8.1 散列概覽 87
8.2 HashTable類 88
8.2.1 選擇一個(gè)散列函數(shù) 88
8.2.2 一個(gè)更好的散列函數(shù) 91
8.2.3 散列化整型鍵 93
8.2.4 對散列表排序、從散列表中取值 95
8.3 碰撞處理 96
8.3.1 開鏈法 96
8.3.2 線性探測法 99
8.4 練習(xí) 100
第9章 集合 101
9.1 集合的定義、操作和屬性 101
9.1.1 集合的定義 101
9.1.2 對集合的操作 102
9.2 Set類的實(shí)現(xiàn) 102
9.3 更多集合操作 104
9.4 練習(xí) 107
第10章 二叉樹和二叉查找樹 109
10.1 樹的定義 109
10.2 二叉樹和二叉查找樹 111
10.2.1 實(shí)現(xiàn)二叉查找樹 111
10.2.2 遍歷二叉查找樹 113
10.3 在二叉查找樹上進(jìn)行查找 116
10.3.1 查找最小值和最大值 116
10.3.2 查找給定值 117
10.4 從二叉查找樹上刪除節(jié)點(diǎn) 118
10.5 計(jì)數(shù) 120
10.6 練習(xí) 123
第11章 圖和圖算法 125
11.1 圖的定義 125
11.2 用圖對現(xiàn)實(shí)中的系統(tǒng)建!127
11.3 圖類 127
11.3.1 表示頂點(diǎn) 127
11.3.2 表示邊 127
11.3.3 構(gòu)建圖 128
11.4 搜索圖 130
11.4.1 深度優(yōu)先搜索 130
11.4.2 廣度優(yōu)先搜索 133
11.5 查找最短路徑 135
11.5.1 廣度優(yōu)先搜索對應(yīng)的最短路徑 135
11.5.2 確定路徑 135
11.6 拓?fù)渑判颉?37
11.6.1 拓?fù)渑判蛩惴ā?37
11.6.2 實(shí)現(xiàn)拓?fù)渑判蛩惴ā?37
11.7 練習(xí) 141
第12章 排序算法 143
12.1 數(shù)組測試平臺(tái) 143
12.2 基本排序算法 145
12.2.1 冒泡排序 145
12.2.2 選擇排序 148
12.2.3 插入排序 150
12.2.4 基本排序算法的計(jì)時(shí)比較 151
12.3 高級(jí)排序算法 153
12.3.1 希爾排序 153
12.3.2 歸并排序 158
12.3.3 快速排序 163
12.4 練習(xí) 167
第13章 檢索算法 169
13.1 順序查找 169
13.1.1 查找最小值和最大值 172
13.1.2 使用自組織數(shù)據(jù) 175
13.2 二分查找算法 177
13.3 查找文本數(shù)據(jù) 183
13.4 練習(xí) 185
第14章 高級(jí)算法 187
14.1 動(dòng)態(tài)規(guī)劃 187
14.1.1 動(dòng)態(tài)規(guī)劃實(shí)例:計(jì)算斐波那契數(shù)列 188
14.1.2 尋找最長公共子串 191
14.1.3 背包問題:遞歸解決方案 194
14.1.4 背包問題:動(dòng)態(tài)規(guī)劃方案 195
14.2 貪心算法 196
14.2.1 第一個(gè)貪心算法案例:找零問題 196
14.2.2 背包問題的貪心算法解決方案 197
14.3 練習(xí) 199
封面介紹 200