Contents
  1. 1. 引言
  2. 2. 第一章
  3. 3. 第二章
  4. 4. 第二章
  5. 5. 第三章队列
  6. 6. 链表
  7. 7. 集合
  8. 8. 字典和散列表
  9. 9.
  10. 10.
  • 算法
    1. 1. 排序方式
    2. 2. 算法
  • 发现东华的图书馆真的很强大,什么书都有。
    今天我们来说说《学习JavaScript数据结构与算法》。
    都说学前端的不用学数据结构和算法什么的,不过我怎么能够把自己限制在前端的圈子里,我恰好对数据结构和算法有很高的兴趣(还有操作系统什么的)。废话不多少,直接来说说书里的内容。

    引言

    这本书是我在知乎上看到的。因为之前学过数据结构和算法觉得这本书说的有点浅不过还是有收获的。

    第一章

    说的是JavaScript的基础,按照书的意思,调试是在浏览器的console里我想这也太蛋疼了,我直接在node里面调试的很爽。

    第二章

    数组,JavaScript中最基础的数据结构,其实JavaScript中的数组不能算真正意义上的数组。所以效率显得不一定多高。这里我觉得需要注意的点,就是几个函数的使用:

    • filter
    • map
    • sort
      ……详见 链接

    第二章

    第二章说的是栈——后进先出,个人觉得JavaScript的原生函数是有对栈的支持,有push、pop的原生函数,所以实现起来不是很难,但是难得是适用场景,我总是想不到一些场景。书里用的是进制的转换,我之前写的印象深刻的是在编译原理里语法分析。

    第三章队列

    队列———先进先出,JavaScript也有原生的函数的支持,shift、unshift,队列的操作还真么有接触,也许我的代码抽象能力不够吧。

    链表

    我之前用c语言的指针实现过,开始一直想用JavaScript实现,后来看了代码恍然大悟。

    1
    2
    3
    4
    5
    6
    7
    8
    function LinkedList(){
    var Node=function(ele){
    this.element=ele;
    this.next=null;
    }
    var length=0;
    var head=null;
    }

    基本的数据结构。

    集合

    集合在ES6里有原生的支持,这里用数组实现。

    字典和散列表

    这里的字典在ES6中就是map,至于散列表是我真正了解的东西,好像我在数据结构中上过的但是我忘记了,重要的我觉得是那个哈希函数。

    二叉树、红黑树
    搜索方式

    • 广度优先搜索
    • 深度优先搜索

    图的表示

    • 邻接矩阵
    • 邻接表
      搜索方式
    • 广度优先搜索
    • 深度优先搜索

    算法

    排序方式

    • 我最了解的就是快速排序,不稳定的。

    算法

    • 递归分治
    • 动态规划
    • 贪心算法
    • 分支限界法
    Contents
    1. 1. 引言
    2. 2. 第一章
    3. 3. 第二章
    4. 4. 第二章
    5. 5. 第三章队列
    6. 6. 链表
    7. 7. 集合
    8. 8. 字典和散列表
    9. 9.
    10. 10.
  • 算法
    1. 1. 排序方式
    2. 2. 算法