新書推薦:
《
狂飙年代:18世纪俄国的新文化和旧文化(第二卷)
》
售價:HK$
177.0
《
万有引力书系 纳粹亿万富翁 德国财富家族的黑暗历史
》
售價:HK$
109.8
《
中国常见植物野外识别手册:青海册
》
售價:HK$
76.2
《
三星堆对话古遗址(从三星堆出发,横跨黄河流域,长江流域,对话11处古遗址,探源多元一体的中华文明)
》
售價:HK$
87.4
《
迷人的化学(迷人的科学丛书)
》
售價:HK$
143.4
《
宋代冠服图志(详尽展示宋代各类冠服 精美插图 考据严谨 细节丰富)
》
售價:HK$
87.4
《
形似神异:什么是中日传统政治文化的结构性差异
》
售價:HK$
55.8
《
养育不好惹的小孩
》
售價:HK$
77.3
|
編輯推薦: |
数据结构是计算机为了高效地利用资源而组织数据的一种方式。数据结构和算法是解决一切编程问题的基础。 本书首先介绍了JavaScript语言的基础知识,接着讨论了数组、栈、队列和链表等重要的数据结构,随后分析了集合、字典和散列表的工作原理,接下来阐述了什么是树以及如何使用二叉树和二叉搜索树,然后介绍了图、DFS和BFS算法,以及各种排序(冒泡排序、选择排序、插入排序、归并排序、快速排序等)和搜索(顺序搜索、二分搜索)算法,zui后介绍了动态规划和贪心算法等高ji算法。 相较上一版,这一版新增了ES6和ES7的新功能介绍,补充了ES6的当前实现。同时拓展了对树、图、排序算法、动态规划和贪心算法的讨论,增加了AVL树、Dijkstra算法、Floyd-Warshall算法、Prim算法、Kruskal算法、堆排序、分布式排序、背包问题、矩阵链相乘等内容。此外还概述了函数式编程、NP完全理论。 如果你是计算机科学专业的学生,或是刚刚开启职业生涯的技术人员,想探索JavaScript的zui佳能力,这本书一定适合你。
|
內容簡介: |
本书首先介绍了JavaScript 语言的基础知识以及ES6 和ES7 中引入的新功能,接下来讨论了数组、栈、队列、链表、集合、字典、散列表、树、图等数据结构,之后探讨了各种排序和搜索算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序、顺序搜索、二分搜索,然后介绍了动态规划和贪心算法等常用的高-级算法以及函数式编程,zui后还介绍了如何计算算法的复杂度。 本书适用于前端Web 开发人员,以及所有对JavaScript 数据结构与算法感兴趣的读者。
|
關於作者: |
Loiane Groner 花旗银行软件开发经理,负责海外项目的开发和团队管理;原IBM公司系统分析师及团队负责人;巴西坎皮纳斯Java用户组(CampinasJUG)ling导者、圣埃斯皮里图Java用户组(ESJUG)协调人;巴西各大型技术会议特邀发言人;Sencha和Java技术布道者,通过博客(http:loianegroner.com)为软件开发社区撰稿,发表关于IT职业发展和常用开发技术的文章和视频。另著有《精通Ext JS》等书。
|
目錄:
|
第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 hasvalue方法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 和reduce207
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
|
|