数据结构与算法JavaScript描述


数据结构与算法JavaScript描述

文章插图
数据结构与算法JavaScript描述【数据结构与算法JavaScript描述】《数据结构与算法JavaScript描述》是2014年人民邮电出版社出版的图书,作者是Michael McMillan 。
基本介绍书名:数据结构与算法JavaScript描述
作者:[美] Michael McMillan
译者:王群锋 / 杜 欢
ISBN: 9787115363398
页数:216
定价:49.00元
出版社:人民邮电出版社
出版时间:2014-8
装帧:平装
内容简介通过本书的学习,读者将能自如地选择最合适的数据结构与算法,并在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产品设计、可用性实施,热爱标準化 。目录推荐序 XI前言 XII第1章 JavaScript的编程环境和模型 11.1 JavaScript环境 11.2 JavaScript编程实践 21.2.1 声明和初始化变数 31.2.2 JavaScript中的算术运算和数学库函式 31.2.3 判断结构 41.2.4 循环结构 61.2.5 函式 71.2.6 变数作用域 71.2.7 递归 91.3 对象和面向对象编程 101.4 小结 11第2章 数组 132.1 JavaScript中对数组的定义 132.2 使用数组 132.2.1 创建数组 142.2.2 读写数组 152.2.3 由字元串生成数组 152.2.4 对数组的整体性操作 162.3 存取函式 172.3.1 查找元素 172.3.2 数组的字元串表示 182.3.3 由已有数组创建新数组 182.4 可变函式 192.4.1 为数组添加元素 192.4.2 从数组中删除元素 202.4.3 从数组中间位置添加和删除元素 212.4.4 为数组排序 212.5 叠代器方法 222.5.1 不生成新数组的叠代器方法 222.5.2 生成新数组的叠代器方法 252.6 二维和多维数组 272.6.1 创建二维数组 272.6.2 处理二维数组的元素 282.6.3 参差不齐的数组 292.7 对象数组 302.8 对象中的数组 312.9 练习 32第3章 列表 333.1 列表的抽象数据类型定义 333.2 实现列表类 343.2.1 append:给列表添加元素 353.2.2 remove:从列表中删除元素 353.2.3 find:在列表中查找某一元素 353.2.4 length:列表中有多少个元素 363.2.5 toString:显示列表中的元素 363.2.6 insert:向列表中插入一个元素 373.2.7 clear:清空列表中所有的元素 373.2.8 contains:判断给定值是否在列表中 373.2.9 遍历列表 383.3 使用叠代器访问列表 393.4 一个基于列表的套用 403.4.1 读取文本档案 403.4.2 使用列表管理影碟租赁 413.5 练习 44第4章 栈 454.1 对栈的操作 454.2 栈的实现 464.3 使用Stack类 484.3.1 数制间的相互转换 494.3.2 回文 504.3.3 递归演示 514.4 练习 52第5章 伫列 535.1 对伫列的操作 535.2 一个用数组实现的伫列 545.3 使用伫列:方块舞的舞伴分配问题 575.4 使用伫列对数据进行排序 615.5 优先伫列 635.6 练习 65第6章 鍊表 676.1 数组的缺点 676.2 定义鍊表 676.3 设计一个基于对象的鍊表 696.3.1 Node类 696.3.2 LinkedList类 696.3.3 插入新节点 696.3.4 从鍊表中删除一个节点 716.4 双向鍊表 746.5 循环鍊表 786.6 鍊表的其他方法 796.7 练习 79第7章 字典 817.1 Dictionary类 817.2 Dictionary类的辅助方法 837.3 为Dictionary类添加排序功能 857.4 练习 86第8章 散列 878.1 散列概览 878.2 HashTable类 888.2.1 选择一个散列函式 888.2.2 一个更好的散列函式 918.2.3 散列化整型键 938.2.4 对散列表排序、从散列表中取值 958.3 碰撞处理 968.3.1 开链法 968.3.2 线性探测法 998.4 练习 100第9章 集合 1019.1 集合的定义、操作和属性 1019.1.1 集合的定义 1019.1.2 对集合的操作 1029.2 Set类的实现 1029.3 更多集合操作 1049.4 练习 107第10章 二叉树和二叉查找树 10910.1 树的定义 10910.2 二叉树和二叉查找树 11110.2.1 实现二叉查找树 11110.2.2 遍历二叉查找树 11310.3 在二叉查找树上进行查找 11610.3.1 查找最小值和最大值 11610.3.2 查找给定值 11710.4 从二叉查找树上删除节点 11810.5 计数 12010.6 练习 123第11章 图和图算法 12511.1 图的定义 12511.2 用图对现实中的系统建模 12711.3 图类 12711.3.1 表示顶点 12711.3.2 表示边 12711.3.3 构建图 12811.4 搜寻图 13011.4.1 深度优先搜寻 13011.4.2 广度优先搜寻 13311.5 查找最短路径 13511.5.1 广度优先搜寻对应的最短路径 13511.5.2 确定路径 13511.6 拓扑排序 13711.6.1 拓扑排序算法 13711.6.2 实现拓扑排序算法 13711.7 练习 141第12章 排序算法 14312.1 数组测试平台 14312.2 基本排序算法 14512.2.1 冒泡排序 14512.2.2 选择排序 14812.2.3 插入排序 15012.2.4 基本排序算法的计时比较 15112.3 高级排序算法 15312.3.1 希尔排序 15312.3.2 归併排序 15812.3.3 快速排序 16312.4 练习 167第13章 检索算法 16913.1 顺序查找 16913.1.1 查找最小值和最大值 17213.1.2 使用自组织数据 17513.2 二分查找算法 17713.3 查找文本数据 18313.4 练习 185第14章 高级算法 18714.1 动态规划 18714.1.1 动态规划实例:计算斐波那契数列 18814.1.2 寻找最长公共子串 19114.1.3 背包问题:递归解决方案 19414.1.4 背包问题:动态规划方案 19514.2 贪心算法 19614.2.1 第一个贪心算法案例:找零问题 19614.2.2 背包问题的贪心算法解决方案 19714.3 练习 199封面介绍 200作品试读本章描述了JavaScript 的编程环境和基本的编程模组,本书的后续章节将使用这些知识定义各种数据结构和实现各种算法 。1.1JavaScript环境JavaScript 历来是一种仅在浏览器里运行的程式语言 。然而在过去的几年中,这种情况发生了变化,JavaScript 发展为可以作为桌面程式执行,或者在伺服器上执行 。本书就使用这样一种类似的环境:JavaScript shell,这是由Mozilla 提供的综合JavaScript 编程环境SpiderMonkey 中的一部分 。打开SpiderMonkey 的每日构建页面,滚动至页面底部,根据你的计算机作业系统,下载相应的JavaScript shell 。下载完成后,有两种使用JavaScript shell 的方式 。可以选择在互动模式下使用shell,也可以将JavaScript 代码保存在一个档案中,使用shell 进行解释执行 。在命令提示符下输入js,进入shell 的互动模式,命令行里将会出现js> 提示符,这时就可以输入JavaScript 表达式和语句了 。下面演示了和JavaScript shell 进行互动的典型场景: bash js> 1 1 js> 1+23 js> var num = 1; js> num*124 124 js> for (var i = 1; i < 6; ++i) { print(i); } 1 2 34 5 js>你可以输入算术表达式,JavaScript shell 立即会对其进行求值 。也可以输入任意合法的JavaScript 语句,JavaScript shell 也会马上求值 。如果你想探索JavaScript 语句进而了解它们的工作原理,那幺这种互动式shell 是很棒的选择 。完成后,输入quit() 语句退出shell 。另外一种使用JavaScript shell 的方式是用它解释执行一段完整的JavaScript 程式,这也是我们在本书剩余部分使用shell 的方式 。使用JavaScript shell 解释运行程式,首先需要创建一个包含完整JavaScript 程式的档案 。可以使用任何文本编辑器,但是要确保将档案保存为普通文本档案 。唯一的要求是档案名称必须以.js 作为后缀 。JavaScript shell 看到这种后缀才会知道档案里是一段JavaScript 程式 。档案保存完成后,在命令行里输入js 和档案名称,就可以解释执行该JavaScript 程式了 。比如,假设将前面提到的for 循环代码片段保存成一个loop.js 档案,在命令行里输入: c:\js>js loop.js 则会产生如下输出: 1 23 4 5 程式执行完成后,自动返回命令行控制台 。