什么是算法和数据结构?

你可能会在一些教材上看到这句话:

程序 = 算法 + 数据结构

算法(Algorithm):是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。

数据结构(Data Structures):是计算机存储和组织数据的一种方式,可以用来高效地处理数据。

举个例子:二分查找就是一个非常经典的算法,而二分查找经常需要作用在一个有序数组上。这里二分就是一种折半的算法思想, 而数组是我们最常用的一种数据结构,支持根据下标快速访问。很多算法需要特定的数据结构来实现,所以经常把它们放到一块讲。

实际上,在真正的项目开发中,大部分时间都是 从数据库取数据 -> 数据操作和结构化 -> 返回给前端,在数据操作过程中需要合理地抽象, 组织、处理数据,如果选用了错误的数据结构,就会造成代码运行低效。这也是我们需要学习算法和数据结构的原因。

笨方法学算法

这里我们用一种很原始的『笨』方法来学习算法:纸笔模拟。

  • 阅读资料了解算法思想
  • 纸笔模拟尝试理解
  • 用自己熟悉的编程语言来实现
  • 单测

小问题

  • 你还知道哪些经典的算法和数据结构?
  • 学习算法你觉得需要哪些预备知识?
  • 我们的业务代码开发中会涉及到算法吗?
  • 你了解 redis 吗,你知道它有哪几个常用的数据结构吗?你知道它的底层实现方式吗?