风林火山阴雷
其疾如风、其徐如林、侵略如火、不动如山、难知如阴、动如雷震。

前言

大学的时候,数据结构与算法课当时分成两门课来讲,自己也没好好学,现在想起来挺遗憾的。然而遇到瓶颈的时候,回归的还是最基础的东西,数据结构与算法作为基本功之一,还是要好好补补的。

什么是数据结构?什么是算法?

从广义上讲,数据结构就是指一组数据的存储结构,算法就是操作数据的一组方法。数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。 数据结构是静态的,它只是组织数据的一种方式,如果不在它的基础上操作、构建算法,孤立存在的数据结构就是没用的。因此,我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。比如,因为数组具有随机访问的特点,常用的二分查找算法需要用数组来存储数据。但如果选择链表这种数据结构,那么二分查找算法就没有什么作用了,因为链表并不支持随机访问。

为什么要学习数据结构与算法呢?

学习数据结构与算法的目的是建立时间复杂度与空间复杂度意识,写出高质量的代码,能够给设计基础架构,提升编程技能,训练逻辑思维。高手之间的竞争其实就在细节,你用的算法够不够优化,数据存取的效率是不是够高,内存够不够节省等等。这些积累起来,决定了一个框架是不是优秀,性能的好坏是框架其中一个非常重要的评判标准,所以我们需要分析代码的时间、空间复杂度,写出高性能的代码是非常重要的。

数据结构与算法知识点

此图涵盖了所有数据结构和算法书籍中的知识点。

如何学习?

数据结构与算法知识点那么多,我们如何去学习呢?首先咱们要边学边练,有时间可以去 leetcode 刷刷题,实战还是比较重要的。然后可以把学过的知识点总结一下,做做笔记。

  目录