要成为一名合格的开发者,或许可以不用学习「算法与数据结构」,但是要想成为一名优秀的软件工程师,「算法与数据结构」是一门必修课。
另外,学好「算法与数据机构」的基础知识,对于 编写性能优良、可读性强 的工程代码和理解编程语言库函数的源代码都是很有帮助的。
什么是算法与数据结构
算法是解决问题的方法
我们知道数学家高斯在小时候就可以通过首项加末项的和乘以项数除以 22 ,计算出 11 到 100100 的和,高斯就应用了算法使得求解问题变得简单。还有大家所熟知的典故:「草船借箭」、「曹冲称象」、「田忌赛马」等这些历史人物在解决问题的过程中采用的方法,这些方法非常巧妙地解决了一个又一个的问题,收到了很好的效果,因此广为流传。
我们学习算法的目的之一是要 「高效地」解决问题。解决这些问题可能是直接使用计算机科学家发明出来的算法与数据结构,有时解决问题的的灵感的来源,有可能是我们借鉴了前人发明的算法的思想。因此,需要我们 有一定的知识储备和解决问题的经验。
数据结构是解决问题的过程中使用的容器
容器是存放数据的地方,同时容器还提供了一定的「处理数据」的能力,可以帮助我们「高效地」完成任务。我们每天使用的手机就是一个具体的数据结构。手机里保存了我们日常生活、工作所需要的大量的数据和信息,手机也在帮助我们「高效地」处理着大量的数据和信息
在这里我们还要向大家介绍一个概念:数据结构是缓存。
数据结构是缓存
在解决问题的时候,我们通常不是一下子把数据处理完,更多的时候需要先把它们放在一个容器里,等到一定的时刻再把它们拿出来。使用「数据结构」是一种「空间换时间」思想的体现,「空间换时间」的思想会体现在我们学习「算法与数据结构」的整个过程中,恰当使用数据结构可以帮助我们高效地处理数据。所谓恰当,是指针对具体的问题场景,使用了合适的数据结构。
算法与数据结构零基础的朋友。算法是解决问题的方法,数据结构是存放、处理数据的容器和缓存。没有「完美的」数据结构与算法,我们需要针对具体问题给出最合适的解决方案