数据结构和算法:定义与解析

发表时间: 2021-09-13 22:10

1. 数据结构

数据结构是计算机中存储和组织数据的方式

主要包含4方面的内容:

  1. 数据元素(Data)
  2. 逻辑结构:数据元素之间的逻辑关系
  3. 存储结构:逻辑结构在计算机中的存储结构
  4. 所规定的操作:除常见的增删改查外,还有遍历和排序等。

1.1 数据元素

  1. 数据(Data):所有能够被计算机识别的符号集合。它是一个抽象的概念,可以是程序语言中定义的类型,也可以是自定义的结构体类型
  2. 数据元素(Data Element): 数据集合中的一个个体,通常包含多个或一个数据项。如一个Person对象,可能name, address, mobile等数据项
  3. 数据项(Data Item): 是数据结构中讨论的最小单位,存在于某具数据元素的集合中。
  4. 数据对象:具有相同性质的元素集合,如一个由字符串组成的数组,一个由Person对象组成的数组。

1.2 逻辑结构

对于关系型数据,通常有一对一、一对多以及多对多的关系。对于无序的数据,通常用集合来表示。

基于此,逻辑结构有:

  1. 线性结构:通常用来表示一对一的关系,表现形式有:数组、列表、栈、队列及链表等。
  2. 树形结构:用于表示一对多的关系,表现形式就是对应的树。
  3. 图形结构:用于表示多对多的关系,由边和点组成
  4. 集合结构:用于表示无序的数据,表现形式有:字典和散列。

1.3 存储结构

存储结构有两种形式:

  1. 顺序存储:数据存储在一片连续空间中,存取速度快,但是插入和删除慢
  2. 链式存储:数据存储在不连续的空间中,通过辅助结构来寻找。插入和删除效率高,但是存取速度慢。

存储结构与逻辑结构并没有特殊的限制,一个线性结构,即可以顺序存储,也可以链式存储。

1.4 操作

每个数据定义好后,都会有相应的基本操作。对于程序语言来说,各数据类型都有提供相应的基础API操作

通常包含:CRUD、遍历以及排序等。

2. 算法

算法是用来设计一种使用计算机来解决问题的方法

具有以下特性:

  1. 输入:可以有一定的输入参数
  2. 输出:产生至少一个输出结果
  3. 确定性:执行过程必须清晰,无歧义
  4. 有限性:执行的次数、时间和空间必须是有限制。这样才可以评估和对比效率。

如果说编程是一种思想,那算法就是这思想里的灵魂。

3. 数据结构和算法的作用

在我们软件开发过程中,数据结构和算法其实一直存在。当你分析一个难点问题时,你会用到。当你在用像Vue和React之类的库时,也会用到。不同的是,他们定义好了相应的数据结构,你只要去用就行。但是对于高级工程师,只是用,显然是不够的。

对于业务难点的分析解决,通常我们会经历以下几个步骤:

  1. 根据对业务和问题的理解,了解有哪些数据及最终要达到的效果是什么。即输出什么
  2. 根据业务逻辑,分析实现的方式,这步可能会画流程图,然后确认程序的执行步骤,这步其实就是算法设计
  3. 针对上面的设计,我们需要一个合适的数据结构来实现相应的策略。
  4. 通常一个问题会有多个解,我们需要分析出最优解时,就需要算法分析,然后再回到上面两个步骤。
  5. 最后才是程序实现。

综上:

  1. 数据结构在解决计算机问题中起到了:存放要处理的数据及实现算法策略的作用
  2. 算法设计及分析:帮助你更好地解决问题