数据结构与算法

算法

算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。即,能够对一定反复为的输入,在优有限时间内 获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决该问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用 空间复杂度时间复杂度来衡量。

算法是独立存在的一种解决问题的方法和思想。

对于算法而言,实现的语言并不重要,重要的是思想。即算法可以有不同的语法描述实现版本。

数据结构

数据结构是将数据组织起来,为更方便地使用数据。我们为了解决问题,需要将数据保存下来,然后根据数据的存储方式来设计算法实现进行处理,那么数据的存储方式不同就会导致需要不 同的算法进行处理。我们希望算法解决问题的效率越快越好,于是我们就需要考虑数据究竟如何保存的问题,这就是数据结构。

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

数据结构与算法的关系

  • 程序 = 数据结构 + 算法。
  • 数据结构是算法的基础。
  • 数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。因此,我们无法孤立数据结构来将算法,也无法孤立算法来将数据结构。

线性结构和非线性结构

线性结构

  • 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。
  • 线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。
  • 顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的。
  • 链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点存放数据元素以及相邻元素的地址信息。
  • 线性结构常见的有:数组、队列、链表和栈。

非线性结构

  • 二维数组、多维数组、广义表、树、图。