数据结构+算法=程序设计
文章目录
程序设计:为计算机处理问题编制的一组指令集
数据结构:问题的数学模型
和数值计算相关的的数学模型求解的问题,如建立线性代数方程,常微分偏微分方程,就是计算数学所要研究的问题。
和非数值计算相关的的数学模型求解的问题,就是数据结构研究的问题。
数据
能被输入到计算机的,且能被计算机处理的符号的集合。如数,字符,图像,视频,音频。
计算机操作对象的总称
数据元素(数据结构中讨论的基本单位)
数据元素是数据项的集合,数据项才是最小单位。
在实现数据结构的时候,结构体就是一个数据元素,而里面定义的各个成员就是数据项
数据结构
带结构的数据元素的集合
数据结构的形式定义 (逻辑结构): 二元组 Data_Structure(D,S)
其中D是数据元素的有限集,S是D上关系的有限集
逻辑结构在计算机中的表示(存储结构)
元素的映像方法:二进制存储(bit)
关系的映像方法:以一个有序对<X,Y>表示
顺序映像:以存储位置的相邻表示后继关系,y的存储和C的存储位置之间相差常量C
链式映像:以附加信息(指针)表示后继关系。如X这个结点由两部分组成,一是数据元素X的值,二是y的存储地址
数据类型
一个值的集合及定义在此集合上的一组操作的总称。如,java中数组就是一个数据类型,C语言中的int,char……都是数据类型
抽象数据类型(ADT):三元组 (D,S,P)
一个数学模型及定义在此模型上的一组操作。
D是数据对象,S是D上的关系集,P是对D的基本操作集
因此要从抽象数据类型的角度去看数据结构
算法:解决问题的策略,规定的一个有限长的操作序列
算法=控制结构+原操作(固有数据类型的操作)
算法的(渐进)时间复杂度 T(n)=O( f(n) )
表示随着问题规模n的增大,算法执行时间的增长率 (也就是时间复杂度)与 f(n)的增长率相同
算法的执行时间=原操作的执行次数*原操作的执行时间 的和
即执行时间与执行次数之和成正比
下面是矩阵相乘的时间复杂度的求法
从算法中选取一个对于所研究问题是基本操作的原操作,该基本操作在算法中重复执行的次数(即执行次数之和)作为算法运行时间的衡量标准。
下面的原操作有赋值,相加,相乘,乘法是基本操作