學習JavaScript數據結構與算法 第2版 ( 簡體 字) |
作者:[巴西] 洛伊安妮·格羅納(Loiane Groner) | 類別:1. -> 程式設計 -> 網路編程 -> Javascript |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 47697 詢問書籍請說出此書號!【缺書】 【不接受訂購】 |
出版日:9/1/2017 |
頁數:217 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
【不接受訂購】 |
ISBN:9787115467539 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:資料結構與演算法分析入門書 含ES6 ES7新功能 用JS學習常用的資料結構和演算法 高效解決電腦科學中的常見問題
本書首先介紹了JavaScript 語言的基礎知識以及ES6 和ES7 中引入的新功能,接下來討論了陣列、棧、佇列、鏈表、集合、字典、散清單、樹、圖等資料結構,之後探討了各種排序和搜索演算法,包括冒泡排序、選擇排序、插入排序、歸併排序、快速排序、堆排序、計數排序、桶排序、基數排序、循序搜尋、二分搜索,然後介紹了動態規劃和貪心演算法等常用的高-級演算法以及函數式程式設計,zui後還介紹了如何計算演算法的複雜度。
本書適用於前端Web 開發人員,以及所有對JavaScript 資料結構與演算法感興趣的讀者。
|
目錄: 第1 章 JavaScript 簡介 1
1.1 JavaScript 資料結構與演算法 1
1.2 環境搭建 2
1.2.1 最簡單的環境搭建 2
1.2.2 使用Web 伺服器(XAMPP) 4
1.2.3 使用Node.js 搭建Web 伺服器 5
1.3 JavaScript 基礎 6
1.3.1 變數 7
1.3.2 操作符 9
1.3.3 真值和假值 11
1.3.4 相等操作符(==和===) 12
1.4 控制結構 14
1.4.1 條件陳述式 14
1.4.2 迴圈 15
1.5 函數 16
1.6 JavaScript 物件導向程式設計 17
1.7 調試工具 18
1.8 ECMAScript 概述 19
1.9 ECMAScript 6 的功能 21
1.9.1 用let 替代var 聲明變數 21
1.9.2 常量 23
1.9.3 範本字面量 23
1.9.4 箭頭函數 24
1.9.5 函數的參數預設值 24
1.9.6 聲明展開和剩餘參數 25
1.9.7 使用類進行物件導向程式設計 27
1.10 ECMAScript 7 的功能 29
1.11 小結 30
第2 章 陣列 31
2.1 為什麼用陣列 31
2.2 創建和初始化陣列 32
2.3 添加元素 33
2.3.1 使用push 方法 33
2.3.2 插入元素到陣列首位 34
2.4 刪除元素 34
2.5 在任意位置添加或刪除元素 36
2.6 二維和多維陣列 36
2.6.1 反覆運算二維陣列的元素 37
2.6.2 多維陣列 38
2.7 JavaScript 的陣列方法參考 39
2.7.1 陣列合併 39
2.7.2 反覆運算器函數 40
2.7.3 ECMAScript 6 和陣列的新功能 42
2.7.4 排序元素 46
2.7.5 搜索 48
2.7.6 輸出陣列為字串 49
2.8 類型陣列 50
2.9 小結 51
第3 章 棧 52
3.1 棧資料結構 52
3.1.1 創建棧 53
3.1.2 向棧添加元素 53
3.1.3 從棧移除元素 53
3.1.4 查看棧頂元素 54
3.1.5 檢查棧是否為空 54
3.1.6 清空和列印棧元素 54
3.2 ECMAScript 6 和Stack 類 56
3.3 用棧解決問題 59
3.4 小結 61
第4 章 佇列 62
4.1 佇列資料結構 62
4.2 創建佇列 63
4.2.1 向佇列添加元素 63
4.2.2 從佇列移除元素 63
4.2.3 查看佇列頭元素 64
4.2.4 檢查佇列是否為空 64
4.2.5 列印佇列元素 64
4.3 用ECMAScript 6 語法實現的Queue 類 66
4.4 優先佇列 66
4.5 迴圈佇列——擊鼓傳花 68
4.6 JavaScript 任務佇列 70
4.7 小結 70
第5 章 鏈表 71
5.1 鏈表資料結構 71
5.2 創建鏈表 72
5.2.1 向鏈表尾部追加元素 73
5.2.2 從鏈表中移除元素 75
5.2.3 在任意位置插入元素 77
5.2.4 實現其他方法 79
5.3 雙向鏈表 82
5.3.1 在任意位置插入新元素 82
5.3.2 從任意位置移除元素 85
5.4 迴圈鏈表 87
5.5 小結 88
第6 章 集合 89
6.1 構建資料集合 89
6.2 創建集合 89
6.2.1 has(value)方法 90
6.2.2 add 方法 91
6.2.3 remove 和clear 方法 91
6.2.4 size 方法 92
6.2.5 values 方法 93
6.2.6 使用Set 類 93
6.3 集合操作 94
6.3.1 並集 94
6.3.2 交集 95
6.3.3 差集 97
6.3.4 子集 98
6.4 ES6——Set 類 99
6.5 小結 101
第7 章 字典和散清單 102
7.1 字典 102
7.1.1 創建字典 102
7.1.2 使用Dictionary 類 105
7.2 散列表 106
7.2.1 創建散列表 106
7.2.2 使用HashTable 類 108
7.2.3 散清單和散列集合 109
7.2.4 處理散列表中的衝突 109
7.2.5 創建更好的散列函數 117
7.3 ES6——Map 類 118
7.4 ES6——WeakMap 類和WeakSet 類 118
7.5 小結 119
第8 章 樹 120
8.1 樹資料結構 120
8.2 樹的相關術語 121
8.3 二叉樹和二叉搜尋樹 121
8.3.1 創建BinarySearchTree 類 122
8.3.2 向樹中插入一個鍵 123
8.4 樹的遍歷 126
8.4.1 中序遍歷 126
8.4.2 先序遍歷 127
8.4.3 後序遍歷 128
8.5 搜尋樹中的值 129
8.5.1 搜索最小值和最大值 130
8.5.2 搜索一個特定的值 131
8.5.3 移除一個節點 133
8.6 自平衡樹 137
8.6.1 Adelson-Velskii-Landi 樹(AVL 樹) 137
8.6.2 更多關於二叉樹的知識 143
8.7 小結 143
第9 章 圖 144
9.1 圖的相關術語 144
9.2 圖的表示 146
9.2.1 鄰接矩陣 146
9.2.2 鄰接表 147
9.2.3 關聯矩陣 148
9.3 創建Graph 類 148
9.4 圖的遍歷 150
9.4.1 廣度優先搜索 151
9.4.2 深度優先搜索 156
9.5 最短路徑演算法 162
9.5.1 Dijkstra 演算法 163
9.5.2 Floyd-Warshall 演算法 165
9.6 最小生成樹 166
9.6.1 Prim 演算法 166
9.6.2 Kruskal 演算法 168
9.7 小結 169
第10 章 排序和搜索演算法 170
10.1 排序演算法 170
10.1.1 冒泡排序 171
10.1.2 選擇排序 174
10.1.3 插入排序 175
10.1.4 歸併排序 176
10.1.5 快速排序 179
10.1.6 堆排序 183
10.1.7 計數排序、桶排序和基數排序(分散式排序) 186
10.2 搜索演算法 187
10.2.1 循序搜尋 187
10.2.2 二分搜索 187
10.3 小結 189
第11 章 演算法模式 190
11.1 遞迴 190
11.1.1 JavaScript 調用棧大小的限制 191
11.1.2 斐波那契數列 191
11.2 動態規劃 193
11.2.1 最少硬幣找零問題 194
11.2.2 背包問題 196
11.2.3 最長公共子序列 198
11.2.4 矩陣鏈相乘 200
11.3 貪心演算法 202
11.3.1 最少硬幣找零問題 203
11.3.2 分數背包問題 204
11.4 函數式程式設計簡介 205
11.4.1 函數式程式設計與命令式程式設計 205
11.4.2 ES2015 和函數式程式設計 206
11.4.3 JavaScript 函數式工具箱——
map、filter 和reduce 207
11.4.4 JavaScript 函數式類庫和資料結構 209
11.5 小結 209
第12 章 演算法複雜度 210
12.1 大O 標記法 210
12.1.1 理解大O 標記法 210
12.1.2 時間複雜度比較 212
12.1.3 NP 完全理論概述 214
12.2 用演算法娛樂身心 216
12.3 小結 217
|
序: |