查看方式:在新标签页中打开图片查看 || 下载查看(图片太大太强了QAQ)
这一段主要用来理清数据结构的一些相关概念。
数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。 数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。 在计算机系统中,数据以二进制信息单元0,1的形式表示。
——百度百科
数据是描述客观事物的符号,是计算机中可以操作的对象,能被计算机识别,并输入给计算机处理的符号集合。
数据元素(data element)是计算机科学术语。它是数据的基本单位,数据元素也叫做结点或记录。
——百度百科
数据元素是组成数据的、有一定意义的基本单位,在计算机通常作为整体处理,也被称为记录。
数据项是指数据元素可由若干个数据项(data item)组成,数据项是数据的不可分割的最小单位。
——百度百科
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
逻辑结构:数据对象中数据元素之间的相互关系
集合结构:集合中的数据元素除了同属一个集合外,它们之间没有其他关系
线性结构:一个有序数据元素的集合;数据元素之间是“一对一”的关系的数据结构
树形结构:数据元素之间存在一种“一对多”的层次关系
图形结构:数据元素是“多对多”的关系
物理结构:数据的逻辑结构在计算机中的存储形式
顺序存储结构:数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的
链式存储结构:数据元素存放在任意存储单元里,存储单元可以是连续的,也可以是不连续的
逻辑结构是面向问题的,物理结构是面向计算机的,其基本目标就是将数据及其逻辑关系存储到计算机的内存中。
计算机程序是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。
——百度百科
A computer program is a collection of instructions that performs a specific task when executed by a computer.
——Wikipedia
程序的组成部分主要有算法、数据结构
算法:特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
算法的时间复杂度是一个函数,它定性的描述该算法的运行时间。
算法的空间复杂度是对一个算法在运行过程中临时占用存储空间大小的度量。
任意输入规模的期望运行次数
任意输入规模的最大运行次数
任意输入规模的最小运行次数(通常最好情况不会出现)
递归总次数 $\times$ 每次递归次数
N $\times$ 每次递归空间大小
若一个对象的部分包含它自己或者该对象用它自己给自己定义,则称这个对象是递归的。
一个过程直接或间接的调用自己
把问题分解成规模更小的具有与原来问题相同解法的小问题
递归调用返回的结果总被直接返回
将单次计算的结果缓存起来,传递给下次调用,相当于自动累积
递归总次数 $\times$ 每次递归次数
回溯算法说白了就是穷举法。不过回溯算法使用剪枝函数,剪去一些不可能到达 最终状态(即答案状态)的节点,从而减少状态空间树节点的生成。