栈和队列:与列表类似但更复杂的数据结构。
链表:如何通过它们克服数组的不足。
字典:将数据以键-值对的形式存储。
散列:适用于快速查找和检索。
集合:适用于存储只出现一次的元素。
二叉树:以层级的形式存储数据。
图和图算法:网络建模的理想选择。
算法:包括排序或搜索数据的算法。
高级算法:动态规划和贪心算法。
名人推荐

“本书对前端工程师是非常好的数据结构与算法入门书籍,它的难度非常适合前端工程师来补习基础知识。”——程劭非,阿里无线事业部高级技术专家" />

数据结构与算法JavaScript描述

Michael McMillan (作者) 王群锋 , 杜欢 (译者)
上市销售
数组和列表:最常用的数据结构。
栈和队列:与列表类似但更复杂的数据结构。
链表:如何通过它们克服数组的不足。
字典:将数据以键-值对的形式存储。
散列:适用于快速查找和检索。
集合:适用于存储只出现一次的元素。
二叉树:以层级的形式存储数据。
图和图算法:网络建模的理想选择。
算法:包括排序或搜索数据的算法。
高级算法:动态规划和贪心算法。
名人推荐

“本书对前端工程师是非常好的数据结构与算法入门书籍,它的难度非常适合前端工程师来补习基础知识。”——程劭非,阿里无线事业部高级技术专家
电子书
¥29.99
格式
mobi   pdf

纸质书
¥38.71 ¥49.00

其他购买方式?

出版信息

  • 书  名数据结构与算法JavaScript描述
  • 执行编辑关于本书的内容有任何问题,请联系 岳新欣
  • 出版日期2014-08-18
  • 书  号978-7-115-36339-8
  • 定  价49.00 元
  • 页  数216
  • 印刷方式黑白
  • 开  本16开
  • 出版状态上市销售
  • 原书名
  • 原书号

所属分类

本书特色

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

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

目录

版权声明 阅读
O'Reilly Media, Inc.介绍 阅读
推荐序 阅读
前言 阅读
第 1 章 JavaScript的编程环境和模型 阅读
第 2 章 数组 阅读
第 3 章 列表
第 4 章 栈
第 5 章 队列
第 6 章 链表
第 7 章 字典
第 8 章 散列
第 9 章 集合
第 10 章 二叉树和二叉查找树
第 11 章 图和图算法
第 12 章 排序算法
第 13 章 检索算法
第 14 章 高级算法
封面介绍

作者介绍

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产品设计、可用性实施,热爱标准化。

大家也喜欢

相关文章

  • 万博menbetx官网 12推荐

    如果让海明威写JavaScript

    https://byfat.xxx/if-hemingway-wrote-javascript 在写第一行代码很久以前,我就酷爱文学。现在,我写JavaScript,不计其数。我正在写一本关于JavaScript的书。 JavaScript凭啥能吸引那么多文艺青年?说到它…...

  • 1.书中的代码需要在JavaScript shell中才能正常运行,如果使用其他的环境(比如在浏览器里),则代码需要做一定修改才能正常运行(书中的输入输出方法全都要改,print()方法在浏览器中会启动打印文档,而不是输出结果)
    2.书中的JavaScript shell下载链接已经失效,最新链接在(https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/,安装包位于目录的最下方
    3.书中的代码错漏百出,原版如此,中文版也如此,一错再错,薄薄的一本书,质量把关居然这么不严,manbetx户口真该好好反思一下。
    4.这本书只是对各算法的速览,讲的不够深入
    5.我不会向任何人推荐本书
    吴堂煌  发表于 2016-08-01 20:54:05
  • 例子是挺好的,因为很多错误。第一个list基本迭代器例子是用不了,我修改为如下:

    function List() {
    this.listSize = 0;
    this.pos = 0;
    this.dataStore = [];
    this.clear = clear;
    this.find = find;
    this.toString = toString;
    this.insert = insert;
    this.append = append;
    this.remove = remove;
    this.front = front;
    this.end = end;
    this.prev = prev;
    this.next = next;
    this.lenght = length;
    this.currPos = currPos;
    this.moveTo = moveTo;
    this.getElement = getElement;
    this.length = length;
    this.contains = contains;
    this.hasNext = hasNext;
    this.hasPrev = hasPrev;
    }

    function append(element) {
    this.dataStore[this.listSize++] = element;
    }

    function find(element) {
    for (var i = 0; i < this.dataStore.length; ++i) {
    if (this.dataStore[i] == element) {
    return i;
    }
    }
    return -1;
    }

    function remove(element) {
    var foundAt = this.find(element);
    if (foundAt > -1) {
    this.dataStore.splice(foundAt, 1);
    --this.listSize;
    return true;
    }
    return false;
    }

    function length() {
    return this.listSize;
    }

    function toString() {
    return this.dataStore;
    }

    function insert(element, after) {
    var insertPos = this.find(after);
    if (insertPos > -1) {
    this.dataStore.splice(insertPos+1, 0, element);
    ++this.listSize;
    return true;
    }
    return false;
    }

    function clear() {
    delete this.dataStore;
    this.dataStore = [];
    this.listSize = this.post = 0;
    }

    function contains(elemet) {
    return (this.find(elemet) != -1);
    }

    function front() {
    this.pos = 0;
    }

    function end() {
    this.pos = this.listSize - 1;
    }

    function prev() {
    //if (this.pos > 0) {
    --this.pos;
    //}
    }

    function next() {
    //if (this.pos < this.listSize - 1) {
    ++this.pos;
    //}
    }

    function currPos() {
    return this.pos;
    }

    function hasNext() {
    return this.pos < this.length();
    }

    function hasPrev() {
    return this.pos-1 > 0;
    }

    function moveTo(position) {
    this.pos = position;
    }

    function getElement() {
    return this.dataStore[this.pos];
    }


    var names = new List();
    names.append("Clayton");
    names.append("Raymond");
    names.append("Cynthia");
    names.append("Jennifer");
    names.append("Bryan");
    names.append("Danny");

    for(names.front(); names.hasNext(); names.next()) {
    print(names.getElement());
    }


    for(names.end(); names.hasPrev(); names.prev()) {
    print(names.getElement());
    }
    疯人院主任  发表于 2014-10-21 17:28:17
    • function prev() {
      //if (this.pos > 0) {
      --this.pos;
      //}
      }

      function next() {
      //if (this.pos < this.listSize - 1) {
      ++this.pos;
      //}
      }
      确实是因为这两句导致for循环陷入了死循环。

      志華小仙  发表于 2014-12-05 23:46:19
  • 代码错误太多,真是白瞎了 O'Reilly 的书,不建议购买。搞不清楚这两个译者的目的,刷个简历么?
    哈夫曼的树  发表于 2019-07-30 17:44:28
  • 这本书不推荐。质量较差。
    oymyisme  发表于 2015-10-12 21:53:48
  • 书本里面的代码在哪里获取?
    XiaoKuiKui  发表于 2014-08-11 12:07:25
    • https://github.com/oreillymedia/data_structures_and_algorithms_using_javascript.git

      XiaoKuiKui  发表于 2014-08-11 12:32:00
  • 我怀疑作者根本没有运行过他的代码。。。。优先队列的dequeue()的实现就是错的。。。。
    心比天高智比猪低  发表于 2016-03-10 08:08:31
    • 我刚看到队列,跳舞的例子巨坑啊,书中的read()方法根本就不是JS的,不知道什么语言强行拿来用的。这本真是谁买谁倒霉啊!

      开心就好123  发表于 2016-07-19 15:08:42
    • 散列的那章错误更明显

      ffey  发表于 2017-04-14 12:01:42
    • @开心就好123 本书的确很多错误,但是这个不是错误,书的开头说了,他们用的是JavaScript Shell 编译器编译的,read是这个编译特有的,您用nodeJS 无法运行

      maik000  发表于 2018-10-14 22:51:41
  • 整本书的输出方法print()有用吗?我测试都是弹出打印窗口
    开心就好123  发表于 2016-07-19 15:04:22
    • 因为书里的代码不是基于浏览器的,是基于一个叫jsshell的。https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/,安装包位于目录的最下方

      卞林  发表于 2017-04-10 20:13:42
    • 他们用的是JavaScript Shell 编译器编译的

      maik000  发表于 2018-10-14 22:52:02
  • 求个电子版啊!!!
    大雄兔  发表于 2014-08-04 22:38:34
    • 买了书的话,这个书后面不是有电子券么?

      maik000  发表于 2018-10-14 22:52:32
  • 同求
    alwayrun  发表于 2014-08-05 10:15:14
  • kindle !!!!!!!!!
    XiaoKuiKui  发表于 2014-08-05 10:21:23
  • 第一次电子版先行,支持!!
    level55_474  发表于 2014-08-10 23:57:34
  • 很早之前买的,最近翻来看看,感觉这本书偏简单了,讲的东西都蛮基础的,如果你会js, 会基本的算法的话,就可以不买啦。而且Js的实现本来就比较简单。。
    贝壳儿  发表于 2015-05-26 22:53:09
  • 入门书籍
    心比天高智比猪低  发表于 2016-03-07 20:57:31
  • 代码漏洞百出,质量根本没过关,强烈不建议买
    Kernswift  发表于 2016-10-30 11:12:41
    • 我想问下31页是不是错的?这个网站的勘错记录在哪里查看

      maik000  发表于 2018-10-09 16:30:50
  • 39页的迭代器遍历的案例
    ```
    来看一个使用迭代器遍历列表的例子:
    for(names.front(); names.currPos() < names.length(); names.next()) {
    print(names.getElement());
    }
    ```
    将里面的代码换成下面这样,代码即可正常运行
    ```
    for(names.front(); ;names.next()){
    print(names.getElement())
    if(names.currPos() == names.length()-1){
    print('Done!')
    return
    }
    }
    ```
    纯爱枫若情  发表于 2017-03-17 15:02:27