编程尽头 - - - 数据结构

编程的真相是对数据的处理

  • 无论前端后端算法区块链…..
  • 无论 js、java、C++

数据结构与算法的本质就是一门专门研究数据如何组织、存储和操作的科目。

算法+数据结构=程序(Algorithm+Data Structures=Programs)

系统、语言、框架源码随处可见数据结构与算法:

无论是操作系统(Windows、Mac OS)本身,还是我们所使用的编程语言(JavaScript、Java、C++、Python 等等),还是平时应用程序中用到的框架(Vue、React、Spring、Flask 等等),它们的底层实现到处都是数据结构与算法,所以想学习一些底层的知识或者某一个框架的源码(比如 Vue、React 的源码)是必须要掌握数据结构与算法的。

以前端为例:框架中大量使用到了栈结构、队列结构等来解决问题(比如之前看框架源码时经常看到这些数据结构,Vue 源码、React 源码、Webpack 源码中可以看到队列、栈结构、树结构等等,Webpack 中还可以看到很多 Graph 图结构);

实现语言或者引擎本身也需要大量的数据结构:哈希表结构、队列结构(微任务队列、宏任务队列),前端无处不在的数据结构:DOM Tree(树结构)、AST(抽象语法树)。

常见的数据结构

数组、栈、队列、链表、树、图、堆、哈希表…

算法

算法的定义:

  • 一个有限指令集,每条指令的描述不依赖于语言
  • 接受一些输入(有些情况下不需要输入)
  • 产生输出
  • 一定在有限步骤之后终止

算法通俗理解:

  • Algorithm 这个单词本意就是解决问题的办法/步骤逻辑。
  • 数据结构的实现,离不开算法。