作品简介

通过本书的学习,读者将能自如地选择最合适的数据结构与算法,并在JavaScript开发中懂得权衡使用。此外,本书也概述了与数据结构与算法相关的JavaScript特性。

作者简介:

Michael McMillan

作为大学老师和程序员,曾编写过多部受到好评的数据结构与算法图书,包括Data Structures and Algorithms Using C#、Data Structures and Algorithms Using Visual Basic.NET,以及其他计算机教程,如Object-Oriented Programming with Visual Basic.NET、C++ Programming: An Introduction、Java Programming Tutorial、Perl from the Ground Up等。Michael现在阿肯色州北小石城普瓦斯基技术学院当讲师,教授计算机信息系统。他还是北小石城阿肯色大学的兼职讲师,教授信息科学。在做讲师之前,他曾是阿肯色儿童医院的一名程序设计师/分析师,负责统计计算和数据分析。

译者简介:

王群锋

1981年生于陕西省富平县桥西大队三里村,2004年毕业于西安电子科技大学。毕业后当了一名程序员,现居西安,在IBM西安研发中心从事下一代统计预测软件的开发工作。

杜欢

淘宝网高级技术专家,2012年加入淘宝,曾就职于雅虎台湾及CISCO。对前端架构、前后端协作有自己的见解,专注于Web产品设计、可用性实施,热爱标准化。

作品目录

  • O'Reilly Media, Inc.介绍
  • 业界评论
  • 推荐序
  • 前言
  • 为什么要学习数据结构和算法
  • 阅读本书需要的工具
  • 本书组织结构
  • 使用代码示例
  • Safari® Books Online
  • 联系我们
  • 致谢
  • 第 1 章  JavaScript的编程环境和模型
  • 1.1 JavaScript环境
  • 1.2 JavaScript编程实践
  • 1.2.1 声明和初始化变量
  • 1.2.2 JavaScript中的算术运算和数学库函数
  • 1.2.3 判断结构
  • 1.2.4 循环结构
  • 1.2.5 函数
  • 1.2.6 变量作用域
  • 1.2.7 递归
  • 1.3 对象和面向对象编程
  • 1.4 小结
  • 第 2 章 数组
  • 2.1 JavaScript中对数组的定义
  • 2.2 使用数组
  • 2.2.1 创建数组
  • 2.2.2 读写数组
  • 2.2.3 由字符串生成数组
  • 2.2.4 对数组的整体性操作
  • 2.3 存取函数
  • 2.3.1 查找元素
  • 2.3.2 数组的字符串表示
  • 2.3.3 由已有数组创建新数组
  • 2.4 可变函数
  • 2.4.1 为数组添加元素
  • 2.4.2 从数组中删除元素
  • 2.4.3 从数组中间位置添加和删除元素
  • 2.4.4 为数组排序
  • 2.5 迭代器方法
  • 2.5.1 不生成新数组的迭代器方法
  • 2.5.2 生成新数组的迭代器方法
  • 2.6 二维和多维数组
  • 2.6.1 创建二维数组
  • 2.6.2 处理二维数组的元素
  • 2.6.3 参差不齐的数组
  • 2.7 对象数组
  • 2.8 对象中的数组
  • 2.9 练习
  • 第 3 章 列表
  • 3.1 列表的抽象数据类型定义
  • 3.2 实现列表类
  • 3.2.1  append :给列表添加元素
  • 3.2.2  remove :从列表中删除元素
  • 3.2.3  find :在列表中查找某一元素
  • 3.2.4  length :列表中有多少个元素
  • 3.2.5  toString :显示列表中的元素
  • 3.2.6  insert :向列表中插入一个元素
  • 3.2.7  clear :清空列表中所有的元素
  • 3.2.8  contains :判断给定值是否在列表中
  • 3.2.9 遍历列表
  • 3.3 使用迭代器访问列表
  • 3.4 一个基于列表的应用
  • 3.4.1 读取文本文件
  • 3.4.2 使用列表管理影碟租赁
  • 3.5 练习
  • 第 4 章 栈
  • 4.1 对栈的操作
  • 4.2 栈的实现
  • 4.3 使用 Stack 类
  • 4.3.1 数制间的相互转换
  • 4.3.2 回文
  • 4.3.3 递归演示
  • 4.4 练习
  • 第 5 章 队列
  • 5.1 对队列的操作
  • 5.2 一个用数组实现的队列
  • 5.3 使用队列:方块舞的舞伴分配问题
  • 5.4 使用队列对数据进行排序
  • 5.5 优先队列
  • 5.6 练习
  • 第 6 章 链表
  • 6.1 数组的缺点
  • 6.2 定义链表
  • 6.3 设计一个基于对象的链表
  • 6.3.1  Node 类
  • 6.3.2  LinkedList 类
  • 6.3.3 插入新节点
  • 6.3.4 从链表中删除一个节点
  • 6.4 双向链表
  • 6.5 循环链表
  • 6.6 链表的其他方法
  • 6.7 练习
  • 第 7 章  字典
  • 7.1  Dictionary 类
  • 7.2  Dictionary 类的辅助方法
  • 7.3 为 Dictionary 类添加排序功能
  • 7.4 练习
  • 第 8 章 散列
  • 8.1 散列概览
  • 8.2  HashTable 类
  • 8.2.1 选择一个散列函数
  • 8.2.2 一个更好的散列函数
  • 8.2.3 散列化整型键
  • 8.2.4 对散列表排序、从散列表中取值
  • 8.3 碰撞处理
  • 8.3.1 开链法
  • 8.3.2 线性探测法
  • 8.4 练习
  • 第 9 章 集合
  • 9.1 集合的定义、操作和属性
  • 9.1.1 集合的定义
  • 9.1.2 对集合的操作
  • 9.2  Set 类的实现
  • 9.3 更多集合操作
  • 9.4 练习
  • 第 10 章 二叉树和二叉查找树
  • 10.1 树的定义
  • 10.2 二叉树和二叉查找树
  • 10.2.1 实现二叉查找树
  • 10.2.2 遍历二叉查找树
  • 10.3 在二叉查找树上进行查找
  • 10.3.1 查找最小值和最大值
  • 10.3.2 查找给定值
  • 10.4 从二叉查找树上删除节点
  • 10.5 计数
  • 练习
  • 第 11 章 图和图算法
  • 11.1 图的定义
  • 11.2 用图对现实中的系统建模
  • 11.3 图类
  • 11.3.1 表示顶点
  • 11.3.2 表示边
  • 11.3.3 构建图
  • 11.4 搜索图
  • 11.4.1 深度优先搜索
  • 11.4.2 广度优先搜索
  • 11.5 查找最短路径
  • 11.5.1 广度优先搜索对应的最短路径
  • 11.5.2 确定路径
  • 11.6 拓扑排序
  • 11.6.1 拓扑排序算法
  • 11.6.2 实现拓扑排序算法
  • 11.7 练习
  • 第 12 章 排序算法
  • 12.1 数组测试平台
  • 生成随机数据
  • 12.2 基本排序算法
  • 12.2.1 冒泡排序
  • 12.2.2 选择排序
  • 12.2.3 插入排序
  • 12.2.4 基本排序算法的计时比较
  • 12.3 高级排序算法
  • 12.3.1 希尔排序
  • 计算动态间隔序列
  • 12.3.2 归并排序
  • 1. 自顶向下的归并排序
  • 2. 自底向上的归并排序
  • 12.3.3 快速排序
  • 快速排序的算法和伪代码
  • 12.4 练习
  • 第 13 章 检索算法
  • 13.1 顺序查找
  • 13.1.1 查找最小值和最大值
  • 13.1.2 使用自组织数据
  • 13.2 二分查找算法
  • 计算重复次数
  • 13.3 查找文本数据
  • 13.4 练习
  • 第 14 章 高级算法
  • 14.1 动态规划
  • 14.1.1 动态规划实例:计算斐波那契数列
  • 14.1.2 寻找最长公共子串
  • 14.1.3 背包问题:递归解决方案
  • 14.1.4 背包问题:动态规划方案
  • 14.2 贪心算法
  • 14.2.1 第一个贪心算法案例:找零问题
  • 14.2.2 背包问题的贪心算法解决方案
  • 14.3 练习
  • 封面介绍
  • 看完了
展开全部