《数据结构与算法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描述》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- 配置内存中OLTP文件组提高性能
在今天的文章里,我想谈下使用内存中OLTP的内存优化文件组来获得持久性,还有如何配置它来获得高性能.在进入正题前,我想简单介绍下使用你数据库里这个特定文件组,内存OLTP是如何获得持久性的. 内存中O ...
- UWP开发入门(十二)——神器Live Visual Tree
很久以前,我们就有Snoop这样的工具实时修改.查看正在运行的WPF程序,那时候调个样式,修改个模板,相当滋润.随着历史的车轮陷进WP的泥潭中,无论WP7的Silverlight还是WP8.1的run ...
- dock基本使用
通过Docker源安装最新版本通过Docker源安装最新版本 要安装最新的 Docker 版本,首先需要安装 apt-transport-https 支持,之后通过添加源来安装.要安装最新的 Dock ...
- percona-toolkit介绍及安装
percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,包括: 1. 检查master和slave数据的一致性 2. 有效地 ...
- mysql rand()产生随机整数范围及方法
根据官方文档,rand()的取值范围为[0,1) 若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1))例如, 若要在7 ...
- CheckListBox的实现方式分析
实际项目中常常要实现有CheckBox列表框.但是WPF没有自带这样的一个控件,下面就用Style来实现这样的功能.而对于CheckBox列表框,又常常会有一个Select All的CheckBox来 ...
- f4: Facebook’s Warm BLOB Storage System——Erasure Code
Facebook在OSDI 2014上发表论文f4: Facebook's Warm BLOB Storage System,这个系统主要目的就是降低存储成本,在容忍磁盘,主机,机架,数据中心的同时提 ...
- C#如何使用异步编程
怎么使用异步,就是用委托进行处理,如果委托对象在调用列表中只有一个方法,它就可以异步执行这个方法.委托类有两个方法,叫做BeginInvoke和EndInvoke,它们是用来异步执行使用. 异步有三种 ...
- 比较偏门的JVM语言Quercus - PHP on JVM
其实,我不确定Quercus是否可以被认定为一门JVM语言:其次Quercus这个东东分开源版与商业版,开源版只能解释执行.而商业版能编译成Java字节码. 但我知道国内,阿里巴巴很早就在使用它,当然 ...
- Python生成器、迭代器、可迭代对象
把一个列表[]改成()就创建了一个生成器:generator,generator保存的是算法. 可以用于for循环的数据类型:1.集合类型:list tuple dict set str2.gener ...