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

这俩问题,在课本上、百科等地方都有讲述过。但是这些定义很抽象、很拗口,对理解概念感觉没啥实质性的帮助,反而是将这些概念死记住。

从广义上看,数据结构就是指一组数据的存储结构。算法是操作数据的方法。

我们如何把现实中大量而复杂的问题使用特定的数据类型和特定的存储结构保存到主存储器(内存)中,这就是数据结构。接着在此基础上为实现某个功能(比如:增删查改)而执行的操作,叫做算法。

数据结构 = 个体的存储 + 个体间的关系存储
算法 = 对存储数据的操作

算法(官方解释):是指解决问题的方法或过程,包含一系列步骤,用于将输入数据转换成输出结果。

算法的性质

  • 输入:有零个或多个输入
  • 输出:至少有一个输出
  • 确定性:组成算法的每条指令清晰、无歧义
  • 有限性:算法中每条指令的执行次数、执行时间有限

常用基础的数据结构

数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树

常用的基础算法

学习数据结构与算法,最常用、最基础的如下:

递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法