第1章 初识数据结构

本章主要内容

 为什么需要了解数据结构和算法

 算法和数据结构的区别

 对问题进行抽象

 从问题到解决方案

学习算法与数据结构是一个非常好的决定!

如果你还在犹豫不决,我们希望本章介绍的内容能打消你的疑虑并激发你对这个主题的兴趣。

为什么要学习数据结构和算法?简单来说,想要成为更优秀的软件开发人员,学习数据结构和算法能让我们事半功倍。

你有没有听说过“马斯洛的锤子”(又称为“工具规律”)?这是一个通过观察得到的假设,意味着只知道一种做事方式的人,想把这种方式运用到所有情况之下,而不关注情况的差异性。

如果只有锤子这一个工具,那么容易把所有东西当作钉子。类似地,如果只知道可以对列表进行排序,那么在向任务列表中添加新的任务或者选择下一个需要处理的任务时,通常就会尝试对任务列表进行排序,而不会根据上下文来获得更高效的解决方案。

本书旨在为你提供更多用于解决问题的“工具”。我们将以计算机科学专业基础课通常都会介绍的基本算法作为基础,向你介绍更高级的内容。

读完本书,你应该能够知道在什么情况下,可以使用特定的数据结构和(或)算法来提高代码的性能。

当然,我们并不期望你能把后面将要讨论的所有数据结构的每个细节都熟记于心,而更希望你能够了解如何推理问题,进而找到可以解决问题的相关算法。作为一本类似于菜谱的手册,本书会把各种问题归纳到常见的几个大类里,并给出可以解决这几大类问题的最佳数据结构。

需要注意的是,本书的某些主题较为超前。因此,在深入研究具体细节时,你可能需要反复阅读才能真正理解所有的内容。本书会给出多层次的深入分析,并将高级的部分放在各章的末尾。因此,如果只是想要了解这些主题,那么你可以忽略这些针对理论而进行的深入研究。