内容简介
本书首先介绍了JavaScript语言的基础知识,接下来讨论了数组、栈、队列、链表、集合、字典、散列表、树、图等数据结构,之后探讨了各种排序和搜索算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序、顺序搜索、二分搜索,还介绍了动态规划和贪心算法等常用的高级算法及相关知识。
目录
- 第1章JavaScript简介1
- 1.1环境搭建1
- 1.1.1浏览器2
- 1.1.2使用Web服务器(XAMPP)3
- 1.1.3使用Node.js搭建Web服务器4
- 1.2JavaScript基础6
- 1.2.1变量7
- 1.2.2操作符8
- 1.2.3真值和假值11
- 1.2.4相等操作符(==和===)12
- 1.3控制结构13
- 1.3.1条件语句14
- 1.3.2循环15
- 1.4函数16
- 1.5面向对象编程16
- 1.6调试工具18
- 1.7小结18
- 第2章数组19
- 2.1为什么用数组19
- 2.2创建和初始化数组20
- 2.3添加和删除元素21
- 2.4二维和多维数组24
- 2.5JavaScript的数组方法参考26
- 2.5.1数组合并27
- 2.5.2迭代器函数27
- 2.5.3搜索和排序28
- 2.5.4输出数组为字符串31
- 2.6小结32
- 第3章栈33
- 3.1栈的创建33
- 3.2从十进制到二进制38
- 3.3小结39
- 第4章队列40
- 4.1创建队列40
- 4.1.1完整的Queue类42
- 4.1.2使用Queue类43
- 4.2优先队列44
- 4.3循环队列——击鼓传花46
- 4.4小结47
- 第5章链表48
- 5.1创建一个链表49
- 5.1.1向链表尾部追加元素50
- 5.1.2从链表中移除元素52
- 5.1.3在任意位置插入一个元素54
- 5.1.4实现其他方法56
- 5.2双向链表58
- 5.2.1在任意位置插入一个新元素59
- 5.2.2从任意位置移除元素61
- 5.3循环链表64
- 5.4小结64
- 第6章集合65
- 6.1创建一个集合65
- 6.1.1has(value)方法66
- 6.1.2add方法66
- 6.1.3remove和clear方法67
- 6.1.4size方法68
- 6.1.5values方法69
- 6.1.6使用Set类69
- 6.2集合操作70
- 6.2.1并集70
- 6.2.2交集71
- 6.2.3差集72
- 6.2.4子集73
- 6.3小结74
- 第7章字典和散列表75
- 7.1字典75
- 7.1.1创建一个字典75
- 7.1.2使用Dictionary类78
- 7.2散列表79
- 7.2.1创建一个散列表79
- 7.2.2使用HashTable类81
- 7.2.3散列表和散列集合82
- 7.2.4处理散列表中的冲突82
- 7.2.5创建更好的散列函数90
- 7.3小结91
- 第8章树92
- 8.1树的相关术语92
- 8.2二叉树和二叉搜索树93
- 8.2.1创建BinarySearchTree类94
- 8.2.2向树中插入一个键95
- 8.3树的遍历98
- 8.3.1中序遍历98
- 8.3.2先序遍历99
- 8.3.3后序遍历100
- 8.4搜索树中的值101
- 8.4.1搜索最小值和最大值101
- 8.4.2搜索一个特定的值103
- 8.4.3移除一个节点104
- 8.5更多关于二叉树的知识108
- 8.6小结109
- 第9章图110
- 9.1图的相关术语110
- 9.2图的表示112
- 9.2.1邻接矩阵112
- 9.2.2邻接表113
- 9.2.3关联矩阵114
- 9.3创建图类114
- 9.4图的遍历116
- 9.4.1广度优先搜索117
- 9.4.2深度优先搜索122
- 9.5小结128
- 第10章排序和搜索算法129
- 10.1排序算法129
- 10.1.1冒泡排序130
- 10.1.2选择排序133
- 10.1.3插入排序134
- 10.1.4归并排序135
- 10.1.5快速排序138
- 10.2搜索算法142
- 10.2.1顺序搜索143
- 10.2.2二分搜索143
- 10.3小结145
- 第11章算法补充知识146
- 11.1递归146
- 11.1.1JavaScript调用栈大小的
- 限制147
- 11.1.2斐波那契数列147
- 11.2动态规划149
- 11.3贪心算法152
- 11.4大O表示法153
- 11.4.1理解大O表示法153
- 11.4.2时间复杂度比较155
- 11.5用算法娱乐身心156
- 11.6小结157
- 附录A时间复杂度速查表158
- 致谢160
简单来说,正如书名所说,它是目前用JavaScript语言解释最基本的数据结构和算法的最好的书。数组、链表、栈、字典、散列、树、等等,我有我需要的一切。此外,还逐一实现了代码,并说明了思路、代码结构非常清晰。
这本书很薄(160页不到),从图书馆借来三四天,断断续续翻着读完。非常不错的一本数据结构与算法的入门书籍。不论是哪种开发方向,对想学习数据结构与算法的人来说都是个不错的选择,尤其是本身数据结构与算法功底偏弱的前端开发人员(这点上你大可不必认可,起码我是这样的)。
本书从从介绍JavaScript语言(有点鸡肋)入手,然后分别介绍了数组、栈、队列、链表等顺序结构,然后依次介绍了集合、字典和散列表、树和图等非顺序结构,最后介绍了下排序和搜索算法。本书的结尾提了一点关于动态规划和贪心算法、算法复杂度相关的知识,算是一个指引。
全书介绍的比较基础,也比较详细,个人认为西方的作者都比较负责,写书也是娓娓道来,引人入境(当然也不全是所有的作者都这样)。
讲了基础的数据结构,适合数据结构和算法小白看看。存在一些错误,还是建议边看边敲,对照着《算法导论》和Sedgewick 的《算法》看