网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 学习JavaScript数据结构与算法 |
分类 | 人文社科-社会科学-语言文字 |
作者 | (巴西) 洛伊安妮·格罗纳 |
出版社 | 人民邮电出版社 |
下载 | |
简介 | 作者简介 洛伊安妮·格罗纳(Loiane Groner),花旗银行软件开发经理,负责海外项目的开发和团队管理;原IBM公司系统分析师及团队负责人;巴西坎皮纳斯Java用户组(CampinasJUG)协调人;Sencha和Java技术推广者,通过博客为软件开发社区撰稿,发表关于IT职业发展和常用开发技术的文章和视频,并经常受邀在各大技术会议上做报告。另著有《精通Ext JS》等书。 目录 章JavaScript简介1 1.1JavaScript数据结构与算法1 1.2环境搭建2 1.2.1最简单的环境搭建2 1.2.2使用Web服务器3 1.2.3Node.jshttp-server5 1.3JavaScript基础5 1.3.1变量6 1.3.2运算符8 1.3.3真值和假值11 1.3.4相等运算符(==和===)12 1.4控制结构14 1.4.1条件语句14 1.4.2循环15 1.5函数16 1.6JavaScript面向对象编程17 1.7调试工具18 1.8小结20 第2章ECMAScript和TypeScript概述21 2.1ECMAScript还是JavaScript21 2.1.1ES6、ES2015、ES7、ES2016、ES8、ES2017和ES.Next21 2.1.2使用Babel.js23 2.2ECMAScript2015+的功能24 2.2.1用let替代var声明变量24 2.2.2模板字面量27 2.2.3箭头函数27 2.2.4函数的参数默认值28 2.2.5声明展开和剩余参数29 2.2.6增强的对象属性30 2.2.7使用类进行面向对象编程31 2.2.8乘方运算符33 2.2.9模块33 2.3介绍TypeScript39 2.3.1类型推断40 2.3.2接口41 2.3.3其他TypeScript功能43 2.3.4TypeScript中对JavaScript文件的编译时检查43 2.4小结44 第3章数组45 3.1为什么用数组45 3.2创建和初始化数组46 3.3添加元素47 3.3.1在数组末尾插入元素47 3.3.2在数组开头插入元素48 3.4删除元素49 3.4.1从数组末尾删除元素49 3.4.2从数组开头删除元素49 3.5在任意位置添加或删除元素51 3.6二维和多维数组51 3.6.1迭代二维数组的元素52 3.6.2多维数组53 3.7JavaScript的数组方法参考54 3.7.1数组合并55 3.7.2迭代器函数55 3.7.3ECMAScript6和数组的新功能57 3.7.4排序元素60 3.7.5搜索63 3.7.6输出数组为字符串64 3.8类型数组64 3.9TypeScript中的数组65 3.10小结66 第4章栈67 4.1创建一个JavaScript数据结构和算法库67 4.2栈数据结构68 4.2.1创建一个基于数组的栈69 4.2.2向栈添加元素69 4.2.3从栈移除元素70 4.2.4查看栈顶元素70 4.2.5检查栈是否为空71 4.2.6清空栈元素71 4.2.7使用Stack类71 4.3创建一个基于JavaScript对象的Stack类73 4.3.1向栈中插入元素73 4.3.2验证一个栈是否为空和它的大小74 4.3.3从栈中弹出元素74 4.3.4查看栈顶的值并将栈清空75 4.3.5创建toString方法75 4.4保护数据结构内部元素76 4.4.1下划线命名约定76 4.4.2用ES2015的限定作用域Symbol实现类77 4.4.3用ES2015的WeakMap实现类77 4.4.4ECMAScript类属性提案78 4.5用栈解决问题79 4.6小结81 第5章队列和双端队列82 5.1队列数据结构82 5.1.1创建队列83 5.1.2使用Queue类86 5.2双端队列数据结构87 5.2.1创建Deque类87 5.2.2使用Deque类89 5.3使用队列和双端队列来解决问题90 5.3.1循环队列——击鼓传花游戏90 5.3.2回文检查器91 5.3.3JavaScript任务队列93 5.4小结93 第6章链表94 6.1链表数据结构94 6.2双向链表106 6.2.1在任意位置插入新元素107 6.2.2从任意位置移除元素109 6.3循环链表111 6.3.1在任意位置插入新元素112 6.3.2从任意位置移除元素113 6.4有序链表114 6.5创建StackLinkedList类116 6.6小结117 第7章集合118 7.1构建数据集合118 7.2创建集合类119 7.2.1has(element)方法119 7.2.2add方法120 7.2.3delete和clear方法120 7.2.4size方法121 7.2.5values方法122 7.2.6使用Set类122 7.3集合运算123 7.3.1并集123 7.3.2交集125 7.3.3差集127 7.3.4子集128 7.4ECMAScript2015——Set类130 7.5多重集或袋132 7.6小结133 第8章字典和散列表134 8.1字典134 8.1.1创建字典类135 8.1.2使用Dictionary类141 8.2散列表142 8.2.1创建散列表143 8.2.2使用HashTable类146 8.2.3散列表和散列集合147 8.2.4处理散列表中的冲突147 8.2.5创建更好的散列函数158 8.3ES2015Map类159 8.4ES2105WeakMap类和WeakSet类159 8.5小结160 第9章递归161 9.1理解递归161 9.2计算一个数的阶乘162 9.2.1迭代阶乘162 9.2.2递归阶乘163 9.3斐波那契数列165 9.3.1迭代求斐波那契数166 9.3.2递归求斐波那契数166 9.3.3记忆化斐波那契数167 9.4为什么要用递归?它更快吗167 9.5小结168 0章树169 10.1树数据结构169 10.2树的相关术语170 10.3二叉树和二叉搜索树170 10.3.1创建BinarySearchTree类171 10.3.2向二叉搜索树中插入一个键172 10.4树的遍历175 10.4.1中序遍历175 10.4.2先序遍历176 10.4.3后序遍历177 10.5搜索树中的值178 10.5.1搜索最小值和优选值178 10.5.2搜索一个特定的值180 10.5.3移除一个节点182 10.6自平衡树185 10.6.1Adelson-Velskii-Landi树(AVL树)185 10.6.2红黑树194 10.7小结200 1章二叉堆和堆排序201 11.1二叉堆数据结构201 11.1.1创建最小堆类202 11.1.2创建优选堆类208 11.2堆排序算法209 11.3小结211 2章图212 12.1图的相关术语212 12.2图的表示214 12.2.1邻接矩阵215 12.2.2邻接表215 12.2.3关联矩阵216 12.3创建Graph类216 12.4图的遍历219 12.4.1广度优先搜索220 12.4.2深度优先搜索225 12.5最短路径算法231 12.5.1Dijkstra算法232 12.5.2Floyd-Warshall算法234 12.6最小生成树235 12.6.1Prim算法236 12.6.2Kruskal算法237 12.7小结238 3章排序和搜索算法239 13.1排序算法239 13.1.1冒泡排序239 13.1.2选择排序242 13.1.3插入排序244 13.1.4归并排序245 13.1.5快速排序247 13.1.6计数排序251 13.1.7桶排序253 13.1.8基数排序255 13.2搜索算法257 13.2.1顺序搜索257 13.2.2二分搜索258 13.2.3内插搜索260 13.3随机算法261 13.4小结262 4章算法设计与技巧263 14.1分而治之263 14.2动态规划265 14.2.1最少硬币找零问题266 14.2.2背包问题268 14.2.3最长公共子序列270 14.2.4矩阵链相乘272 14.3贪心算法274 14.3.1最少硬币找零问题274 14.3.2分数背包问题275 14.4回溯算法276 14.4.1迷宫老鼠问题277 14.4.2数独解题器279 14.5函数式编程简介282 14.5.1函数式编程与命令式编程283 14.5.3JavaScript函数式工具箱——map、filter和reduce284 14.5.4JavaScript函数式类库和数据结构286 14.6小结286 5章算法复杂度287 15.1大O表示法287 15.1.1理解大O表示法287 15.1.2时间复杂度比较289 15.1.3NP完全理论概述292 15.2用算法娱乐身心293 15.3小结294 内容推荐 本书首先介绍了JavaScript语言的基础知识(包括ECMAScript和TypeScript),其次讨论了数组、栈、队列、双端队列和链表等重要的数据结构,随后分析了集合、字典和散列表的工作原理,接下来阐述了递归的原理、什么是树以及二叉堆和堆排序,然后介绍了图、DFS和BFS算法、各种排序(冒泡排序、选择排序、插入排序、归并排序、快速排序、计数排序、桶排序和基数排序)和搜索(顺序搜索、二分搜索和内插搜索)算法以及随机算法,接着介绍了分而治之、动态规划、贪心算法和回溯算法等不错算法以及函数式编程,很后还介绍了如何计算算法的复杂度。 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。