# 数据结构与算法

为什么要学习数据结构与算法(Why)

  • 我本科读的非科班,靠自学入的行,因此这块知识需要补齐。
  • 掌握了数据结构与算法,平时能有意识和能力写出性能更优的代码。
  • 长期来看,拥有算法思维能有效训练自己大脑的思考能力,对工作和生活都有益。
  • 现在大厂都喜欢靠算法,这已经成了敲门砖。

什么是数据结构与算法(What):

从广义上讲,数据结构就是指一组数据的存储结构;算法就是操作数据的一组方法。
从狭义上讲,数据结构就是指队列、栈、堆等;算法就是指二分查找、动态规划等。

之所以把两者放在一起,是因为数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。因此,我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。


怎么学数据结构与算法(How):

作为一名前端开发工程师,我主要学习一些基础且重点的部分,这样有针对性地学习,效果会更好,也不容易被劝退。

主要有:

  • 10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树。
  • 10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。

前期学习过程中主要用 JavaScript 语言来实现一遍,后期学习完 TypeScript 后会抽时间用 TypeScript 再实现一遍。如果有必要也会用 Python 来实现一遍。