最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

如何成为一流的程序员?必须懂数据结构和算法

XAMPP案例 admin 99浏览 0评论

JavaScript是当下最流行的编程语言。由于浏览器的原生支持(无需安装任何插件),JavaScript也被称作“互联网语言”。JavaScript的应用非常广泛,不仅被用于前端开发,也被用到服务器(Node.js)和数据库(MongoDB)环境中。

对任何专业技术人员来说,理解数据结构都非常重要。作为软件开发者,要能够用编程语言和数据结构来解决问题。编程语言和数据结构是这些问题解决方案中不可或缺的一部分。如果选择了不恰当的数据结构,可能会影响所写程序的性能。因此,了解不同数据结构和它们的适用范围十分重要。算法在计算机科学中扮演着非常重要的角色。解决一个问题有很多种方法,但有些方法会比其他方法更好。因此,了解一下最著名的算法也很重要。
本期就给大家介绍一本前端开发人员必备好书《学习JavaScript数据结构与算法(第2版)》,本书第1版豆瓣评分8.1分,是市面上关于JS数据结构与算法最值得推荐的图书。

为什么用JavaScript来学习数据结构和算法呢?
JavaScript非常受欢迎,作为函数式编程语言,它非常适合用来学习数据结构和算法。通过它来学习数据结构比C或Java这些标准语言更简单,学习新东西也会变得很有趣。谁说数据结构和算法只为C或Java这样的语言而生?
学习数据结构和算法十分重要。首要原因是数据结构和算法可以很高效地解决常见问题,这对你今后所写代码的质量至关重要(也包括性能,要是用了不恰当的数据结构或算法,很可能会产生性能问题)。其次,对于计算机科学,算法是最基础的概念。最后,如果你想入职最好的IT公司(如谷歌、亚马逊、eBay等),数据结构和算法是面试问题的重头戏。

JavaScript环境搭建
相比其他语言,JavaScript的优势之一在于不用安装或配置任何复杂的环境就可以开始学习。每台计算机上都已具备所需的环境,哪怕使用者从未写过一行代码。有浏览器足矣!
K30
A. 最简单的环境搭建
浏览器是最简单的开发环境。你也可以使用Firefox加Firebug。安装好Firebug后,在浏览器的右上角会看到如下图所示的图标。
点击Firebug图标,打开它,可以看到Console标签,我们可以在其命令行区域中编写所有JavaScript代码,如下图所示(执行源代码请按Run按钮)。
K31
也可以扩展命令行,来适应Firebug插件的整个可用区域。你还可以使用谷歌Chrome,它已经集成了Google Developer Tools(谷歌开发者工具)。

打开Chrome,点击设置及控制图标,选中Tools | Developer Tools,如下图所示。
K32

然后,就可以在Console标签页中编写JavaScript测试代码,如下所示。

K33
B. 使用Web服务器(XAMPP)

你可能想要安装的第二个环境是XAMPP,它的安装过程也很简单,但比只使用浏览器麻烦点儿。安装XAMPP(https://www.apachefriends.org)或者你偏爱的其他Web服务器。然后,在XAMPP安装文件夹下找到htdocs目录。在该目录下新建一个文件夹,就可以在里面执行本书中所讲述的源代码;或者是直接将示例代码下载后提取到此目录,如下所示。
K34

接下来,在启动XAMPP服务器之后,你就可以通过localhost这个URL,用浏览器访问源码,如下图所示(别忘了打开Firebug或谷歌开发者工具查看输出)。
执行示例代码时,请不要忘记打开谷歌开发者工具或Firebug查看输出结果。
K35
C. 使用Node.js搭建Web服务器
第三种选择就是100%的JavaScript。我们可以使用Node.js来搭建一个JavaScript服务器,不使用XAMPP搭建的Apache服务器。首先要到http://nodejs.org/下载和安装Node.js。然后,打开终端应用(如果你用的是Windows操作系统,打开Node.js的命令行),输入如下命令:

npm install http-server -g
最好手动输入这些命令,复制粘贴可能会出错。也可以用管理员身份执行上述命令。对于Linux和Mac操作系统,使用如下命令:

sudo npm install http-server -g
这条命令会在你的机器上安装一个JavaScript服务器:http-server。要启动服务器并在终端应用上运行本书中的示例代码,请将工作路径更改至示例代码文件夹,然后输入http-server,如下图所示,整个环境就搭建好了!
K36
为执行示例,打开浏览器,通过http-server命令指定的端口访问:
K37

书中ECMAScript概述
如果你关注JavaScript的新闻和最新趋势,肯定听说过被热炒的ECMAScript 6和ECMAScript 7。ECMAScript跟JavaScript有什么关系,又有什么不同?ECMAScript是一种脚本语言规范。JavaScript是这个规范的一个实现,JScript和ActionScript也是。

我们知道,JavaScript是一种主要在浏览器中运行的语言(也可以运行于NodeJS服务端),每个浏览器都可以实现自己版本的JavaScript功能。这个具体的实现是基于ECMAScript的。因此,浏览器提供的功能大都相同。然而,在不同的浏览器中,每个功能的行为也会存在细微的差别。
目前为止,书中给出的所有代码都是基于2009年12月发布的ECMAScript 5。在编写本书时,ECMAScript的最新版本是2015年7月标准化的ECMAScript 6,与上一个版本时隔近六年。负责起草ECMAScript规范的委员会决定把定义新标准的模式改为每年更新一次,新的特性一旦通过就将加入标准。因此,ECMAScript第六版更名为ECMAScript 2015(ES6)。还有一个准备在2016年夏天发布的新版本,称为ECMAScript 2016或ECMAScript 7(ES7)。

而在本书中,作者会带着大家一起见识一下ES6和ES7中引入的一些新功能。

说到这里小伙伴们是不是很期待呢? 如果你从事前端开发,但拿不准数据结构和算法方面的知识,那你一定要留意一下这本《学习JavaScript数据结构与算法(第2版)》了,看过第1版的小伙伴们也不能错过,毕竟第2版加入了一些你很期待的新内容!

K38
作者:Loiane Groner
译者:邓钢,孙晓博,吴双,陈迪,袁源
定价:49.00元 / 电子书24.99元

用JavaScript学习常用的数据结构和算法,高效解决计算机科学中的常见问题

探索JavaScript的理想读物
首先介绍了JavaScript语言的基础知识,接着讨论了数组、栈、队列和链表等重要的数据结构,随后分析了集合、字典和散列表的工作原理,接下来阐述了什么是树以及如何使用二叉树和二叉搜索树,然后介绍了图、DFS和BFS算法,以及各种排序(冒泡排序、选择排序、插入排序、归并排序、快速排序等)和搜索(顺序搜索、二分搜索)算法,最后介绍了动态规划和贪心算法等高级算法。

相较上一版,这一版新增了ES6和ES7的新功能介绍,补充了ES6的当前实现。同时拓展了对树、图、排序算法、动态规划和贪心算法的讨论,增加了AVL树、Dijkstra算法、Floyd-Warshall算法、Prim算法、Kruskal算法、堆排序、分布式排序、背包问题、矩阵链相乘等内容。此外还概述了函数式编程、NP完全理论。

本书内容简介

第1章“JavaScript简介”,讲述了JavaScript的基础知识,它们可以帮助你更好地学习数据结构和算法,同时还介绍了如何搭建开发环境来运行书中的代码示例。
第2章“数组”,介绍了如何使用数组这种最基础且最常用的数据结构。这一章演示了如何对数组声明、初始化、添加和删除其中的元素,还讲述了如何使用JavaScript语言本身支持的数组方法。

第3章“栈”,介绍了栈这种数据结构,演示了如何创建栈以及怎样添加和删除元素,还讨论了如何用栈解决计算机科学中的一些问题。
第4章“队列”,详述了队列这种数据结构,演示了如何创建队列,以及如何添加和删除队列中的元素,还讨论了如何用队列解决计算机科学中的一些问题,以及栈和队列的主要区别。
第5章“链表”,讲解如何用对象和指针从头创建链表这种数据结构。这一章除了讨论如何声明、创建、添加和删除链表元素之外,还介绍了不同类型的链表,例如双向链表和循环链表。

第6章“集合”,介绍了集合这种数据结构,讨论了如何用集合存储非重复性的元素。此外,还详述了对集合的各种操作以及相应代码的实现。
第7章“字典和散列表”,深入讲解字典、散列表及它们之间的区别。这一章介绍了这两种数据结构是如何声明、创建和使用的,还探讨了如何解决散列冲突,以及如何创建更高效的散列函数。

第8章“树”,讲解了树这种数据结构和它的相关术语,重点讨论了二叉搜索树,以及如何在树中搜索、遍历、添加和删除节点。如果想更深入地学习树(包括相关的算法),这一章还给出了一些建议。

第9章“图”,介绍了图这种数据结构和它的适用范围。这一章讲述了图的常用术语和不同表示方式,探讨了如何使用深度优先算法和广度优先算法遍历图,以及它们的适用范围。
第10章“排序和搜索算法”,探讨了常用的排序算法,如冒泡排序(包括改进版)、选择排序、插入排序、归并排序和快速排序。另外还介绍了搜索算法中的顺序搜索和二分搜索。
第11章“算法模式”,介绍了一些算法技巧和一些著名的算法。这一章讲解了什么是递归,介绍了一些高级算法,如动态规划和贪心算法。
第12章“算法复杂度”,介绍了大O表示法的概念,以及本书实现算法的复杂度列表。这一章还介绍了NP完全问题和启发式算法。最后,讲解了提升算法能力的诀窍。

第1章 JavaScript简介  1

1.1 JavaScript数据结构与算法  1
1.2 环境搭建  2
1.3 JavaScript基础  6
1.4 控制结构  14
1.5 函数  16
1.6 JavaScript面向对象编程  17
1.7 调试工具  18
1.8 ECMAScript概述  19
1.9 ECMAScript 6的功能  21
1.10 ECMAScript 7的功能  29
1.11 小结  30

第2章 数组  31

2.1 为什么用数组  31
2.2 创建和初始化数组  32
2.3 添加元素  33
2.4 删除元素  34
2.5 在任意位置添加或删除元素  36
2.6 二维和多维数组  36
2.7 JavaScript的数组方法参考  39
2.8 类型数组  50
2.9 小结  51

第3章 栈  52

3.1 栈数据结构  52
3.2 ECMAScript 6和Stack类  56
3.3 用栈解决问题  59
3.4 小结  61

第4章 队列  62

4.1 队列数据结构  62
4.2 创建队列  63
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.3 双向链表  82
5.4 循环链表  87
5.5 小结  88

第6章 集合  89
6.1 构建数据集合  89
6.2 创建集合  89
6.3 集合操作  94
6.4 ES6——Set类  99
6.5 小结  101

第7章 字典和散列表  102

7.1 字典  102
7.2 散列表  106
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.4 树的遍历  126
8.5 搜索树中的值  129
8.6 自平衡树  137
8.7 小结  143

第9章 图  144

9.1 图的相关术语  144
9.2 图的表示  146
9.3 创建Graph类  148
9.4 图的遍历  150
9.5 最短路径算法  162
9.6 最小生成树  166
9.7 小结  169

第10章 排序和搜索算法  170

10.1 排序算法  170
10.2 搜索算法  187
10.3 小结  189

第11章 算法模式  190

11.1 递归  190
11.2 动态规划  193
11.3 贪心算法  202
11.4 函数式编程简介  205
11.5 小结  209

第12章 算法复杂度  210

12.1 大O表示法  210
12.2 用算法娱乐身心  216
12.3 小结  217

转载请注明:XAMPP中文组官网 » 如何成为一流的程序员?必须懂数据结构和算法