《数据结构与算法JavaScript描述》

《数据结构与算法JavaScript描述》

基本信息

作者: (美)Michael McMillan

译者: 王群锋 杜欢

丛书名: 图灵程序设计丛书

出版社:人民邮电出版社

ISBN:9787115363398

上架时间:2014-8-5

出版日期:2014 年8月

开本:16开

版次:1-1

所属分类:计算机 > 软件与程序设计 > 网络编程 > javascript

更多关于》》》 《数据结构与算法JavaScript描述》

编辑推荐

随着JavaScript成功走出客户端,在服务器端编程中得到日益广泛的应用,JavaScript程序员需要实现与C#或Java等传统面向对象编程语言相似的数据结构与算法。本书是用JavaScript描述数据结构与算法的开山之作,汇聚了作者多年的实战经验。这本实战指南通过丰富的示例,向读者透彻讲解了在JavaScript环境下,如何通过一系列存储机制(包括链表、栈、队列和图)高效地达到编程目的。

内容简介

书籍

计算机书籍

在过去几年中,JavaScript凭借Node.js和SpiderMonkey等平台,在服务器端编程中得到了广泛应用。JavaScript程序员因而迫切需要使用传统语言(比如C++和Java)提供的工具,包括传统的数据结构以及传统的排序和查找算法。《数据结构与算法JavaScript描述》讨论在数组即对象、无处不在的全局变量、基于原型的对象模型等JavaScript语言的环境下,如何实现高效的数据结构和算法。

《数据结构与算法JavaScript描述》适合JavaScript程序员以及对JavaScript语言感兴趣的学习者,特别是在学校中没有系统学习过计算机科学相关课程的“跨界”程序员。

媒体评论

  “本书对前端工程师是非常好的数据结构与算法入门书籍,它的难度非常适合前端工程师来补习基础知识。”

  ——程劭非,阿里无线事业部高级技术专家

目录

《数据结构与算法javascript描述》

推荐序  xi

前言  xii

第1章 javascript的编程环境和模型  1

1.1 javascript环境  1

1.2 javascript编程实践  2

1.2.1 声明和初始化变量  3

1.2.2 javascript中的算术运算和数学库函数  3

1.2.3 判断结构  4

1.2.4 循环结构  6

1.2.5 函数  7

1.2.6 变量作用域  7

1.2.7 递归  9

1.3 对象和面向对象编程  10

1.4 小结  11

第2章 数组  13

2.1 javascript中对数组的定义  13

2.2 使用数组  13

2.2.1 创建数组  14

2.2.2 读写数组  15

2.2.3 由字符串生成数组  15

2.2.4 对数组的整体性操作  16

2.3 存取函数  17

2.3.1 查找元素  17

2.3.2 数组的字符串表示  18

2.3.3 由已有数组创建新数组  18

2.4 可变函数  19

2.4.1 为数组添加元素  19

2.4.2 从数组中删除元素  20

2.4.3 从数组中间位置添加和删除元素  21

2.4.4 为数组排序  21

2.5 迭代器方法  22

2.5.1 不生成新数组的迭代器方法  22

2.5.2 生成新数组的迭代器方法  25

2.6 二维和多维数组  27

2.6.1 创建二维数组  27

2.6.2 处理二维数组的元素  28

2.6.3 参差不齐的数组  29

2.7 对象数组  30

2.8 对象中的数组  31

2.9 练习  32

第3章 列表  33

3.1 列表的抽象数据类型定义  33

3.2 实现列表类  34

3.2.1 append:给列表添加元素  35

3.2.2 remove:从列表中删除元素  35

3.2.3 find:在列表中查找某一元素  35

3.2.4 length:列表中有多少个元素  36

3.2.5 tostring:显示列表中的元素  36

3.2.6 insert:向列表中插入一个元素  37

3.2.7 clear:清空列表中所有的元素  37

3.2.8 contains:判断给定值是否在列表中  37

3.2.9 遍历列表  38

3.3 使用迭代器访问列表  39

3.4 一个基于列表的应用  40

3.4.1 读取文本文件  40

3.4.2 使用列表管理影碟租赁  41

3.5 练习  44

第4章 栈  45

4.1 对栈的操作  45

4.2 栈的实现  46

4.3 使用stack类  48

4.3.1 数制间的相互转换  49

4.3.2 回文  50

4.3.3 递归演示  51

4.4 练习  52

第5章 队列  53

5.1 对队列的操作  53

5.2 一个用数组实现的队列  54

5.3 使用队列:方块舞的舞伴分配问题  57

5.4 使用队列对数据进行排序  61

5.5 优先队列  63

5.6 练习  65

第6章 链表  67

6.1 数组的缺点  67

6.2 定义链表  67

6.3 设计一个基于对象的链表  69

6.3.1 node类  69

6.3.2 linkedlist类  69

6.3.3 插入新节点  69

6.3.4 从链表中删除一个节点  71

6.4 双向链表  74

6.5 循环链表  78

6.6 链表的其他方法  79

6.7 练习  79

第7章 字典  81

7.1 dictionary类  81

7.2 dictionary类的辅助方法  83

7.3 为dictionary类添加排序功能  85

7.4 练习  86

第8章 散列  87

8.1 散列概览  87

8.2 hashtable类  88

8.2.1 选择一个散列函数  88

8.2.2 一个更好的散列函数  91

8.2.3 散列化整型键  93

8.2.4 对散列表排序、从散列表中取值  95

8.3 碰撞处理  96

8.3.1 开链法  96

8.3.2 线性探测法  99

8.4 练习  100

第9章 集合  101

9.1 集合的定义、操作和属性  101

9.1.1 集合的定义  101

9.1.2 对集合的操作  102

9.2 set类的实现  102

9.3 更多集合操作  104

9.4 练习  107

第10章 二叉树和二叉查找树  109

10.1 树的定义  109

10.2 二叉树和二叉查找树  111

10.2.1 实现二叉查找树  111

10.2.2 遍历二叉查找树  113

10.3 在二叉查找树上进行查找  116

10.3.1 查找最小值和最大值  116

10.3.2 查找给定值  117

10.4 从二叉查找树上删除节点  118

10.5 计数  120

10.6 练习  123

第11章 图和图算法  125

11.1 图的定义  125

11.2 用图对现实中的系统建模  127

11.3 图类  127

11.3.1 表示顶点  127

11.3.2 表示边  127

11.3.3 构建图  128

11.4 搜索图  130

11.4.1 深度优先搜索  130

11.4.2 广度优先搜索  133

11.5 查找最短路径  135

11.5.1 广度优先搜索对应的最短路径  135

11.5.2 确定路径  135

11.6 拓扑排序  137

11.6.1 拓扑排序算法  137

11.6.2 实现拓扑排序算法  137

11.7 练习  141

第12章 排序算法  143

12.1 数组测试平台  143

12.2 基本排序算法  145

12.2.1 冒泡排序  145

12.2.2 选择排序  148

12.2.3 插入排序  150

12.2.4 基本排序算法的计时比较  151

12.3 高级排序算法  153

12.3.1 希尔排序  153

12.3.2 归并排序  158

12.3.3 快速排序  163

12.4 练习  167

第13章 检索算法  169

13.1 顺序查找  169

13.1.1 查找最小值和最大值  172

13.1.2 使用自组织数据  175

13.2 二分查找算法  177

13.3 查找文本数据  183

13.4 练习  185

第14章 高级算法  187

14.1 动态规划  187

14.1.1 动态规划实例:计算斐波那契数列  188

14.1.2 寻找最长公共子串  191

14.1.3 背包问题:递归解决方案  194

14.1.4 背包问题:动态规划方案  195

14.2 贪心算法  196

14.2.1 第一个贪心算法案例:找零问题  196

14.2.2 背包问题的贪心算法解决方案  197

14.3 练习  199

封面介绍  200

本图书信息来源:互动出版网

《数据结构与算法JavaScript描述》

时间: 2024-08-10 05:34:17

《数据结构与算法JavaScript描述》的相关文章

CI框架源码阅读笔记3 全局函数Common.php

从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就非常诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源码阅读笔记2 一切的入口 index

IOS测试框架之:athrun的InstrumentDriver源码阅读笔记

athrun的InstrumentDriver源码阅读笔记 作者:唯一 athrun是淘宝的开源测试项目,InstrumentDriver是ios端的实现,之前在公司项目中用过这个框架,没有深入了解,现在回来记录下. 官方介绍:http://code.taobao.org/p/athrun/wiki/instrumentDriver/ 优点:这个框架是对UIAutomation的java实现,在代码提示.用例维护方面比UIAutomation强多了,借junit4的光,我们可以通过junit4的

Yii源码阅读笔记 - 日志组件

?使用 Yii框架为开发者提供两个静态方法进行日志记录: Yii::log($message, $level, $category);Yii::trace($message, $category); 两者的区别在于后者依赖于应用开启调试模式,即定义常量YII_DEBUG: defined('YII_DEBUG') or define('YII_DEBUG', true); Yii::log方法的调用需要指定message的level和category.category是格式为“xxx.yyy.z

源码阅读笔记 - 1 MSVC2015中的std::sort

大约寒假开始的时候我就已经把std::sort的源码阅读完毕并理解其中的做法了,到了寒假结尾,姑且把它写出来 这是我的第一篇源码阅读笔记,以后会发更多的,包括算法和库实现,源码会按照我自己的代码风格格式化,去掉或者展开用于条件编译或者debug检查的宏,依重要程度重新排序函数,但是不会改变命名方式(虽然MSVC的STL命名实在是我不能接受的那种),对于代码块的解释会在代码块前(上面)用注释标明. template<class _RanIt, class _Diff, class _Pr> in

CI框架源码阅读笔记5 基准测试 BenchMark.php

上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功能,各模块之间可以相互调用,共同构成了CI的核心骨架. 从本篇开始,将进一步去分析各组件的实现细节,深入CI核心的黑盒内部(研究之后,其实就应该是白盒了,仅仅对于应用来说,它应该算是黑盒),从而更好的去认识.把握这个框架. 按照惯例,在开始之前,我们贴上CI中不完全的核心组件图: 由于BenchMa

CI框架源码阅读笔记2 一切的入口 index.php

上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里这次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中,我们并不会逐行进行解释,而只解释核心的功能和实现. 1.       设置应用程序环境 define('ENVIRONMENT', 'development'); 这里的development可以是任何你喜欢的环境名称(比如dev,再如test),相对应的,你要在下面的switch case代码块中

Apache Storm源码阅读笔记

欢迎转载,转载请注明出处. 楔子 自从建了Spark交流的QQ群之后,热情加入的同学不少,大家不仅对Spark很热衷对于Storm也是充满好奇.大家都提到一个问题就是有关storm内部实现机理的资料比较少,理解起来非常费劲. 尽管自己也陆续对storm的源码走读发表了一些博文,当时写的时候比较匆忙,有时候衔接的不是太好,此番做了一些整理,主要是针对TridentTopology部分,修改过的内容采用pdf格式发布,方便打印. 文章中有些内容的理解得益于徐明明和fxjwind两位的指点,非常感谢.

CI框架源码阅读笔记4 引导文件CodeIgniter.php

到了这里,终于进入CI框架的核心了.既然是"引导"文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.com/usr/reg 经过引导文件,实际上会交给Application中的UsrController控制器的reg方法去处理. 这之中,CodeIgniter.php做了哪些工作?我们一步步来看. 1.    导入预定义常量.框架环境初始化 之前的一篇博客(CI框架源码阅读笔记2 一切的入

jdk源码阅读笔记之java集合框架(二)(ArrayList)

关于ArrayList的分析,会从且仅从其添加(add)与删除(remove)方法入手. ArrayList类定义: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Monaco } span.s1 { color: #931a68 } public class ArrayList<E> extends AbstractList<E> implements List<E> ArrayList基本属性: /** *

dubbo源码阅读笔记--服务调用时序

上接dubbo源码阅读笔记--暴露服务时序,继续梳理服务调用时序,下图右面红线流程. 整理了调用时序图 分为3步,connect,decode,invoke. 连接 AllChannelHandler.connected(Channel) line: 38 HeartbeatHandler.connected(Channel) line: 47 MultiMessageHandler(AbstractChannelHandlerDelegate).connected(Channel) line: