目录
基本概念和术语
数据
数据元素
数据项
数据对象
数据的结构
逻辑结构
存储结构(物理结构)
数据类型
定义
原子数据类型
结构数据类型
抽象数据类型(Abstract Data Type,ADT)
算法和算法分析
算法
算法设计要求
时间复杂度
空间复杂度
基本概念和术语
数据
对客观事物的符号表示,描述客观事物的数、字符、以及所有能输入到计算机中,被计算机程序识别和处理的符号的集合。
包括数值型数据和非数值型数据。
数据元素
数据的基本单位,又别称元素、结点、记录。
一个数据元素可由若干个数据项组成。
数据项
数据项时数据的不可分割的最小单位。
一个数据元素可由若干个数据项组成。
数据对象
性质相同的数据元素的集合,是数据的一个子集。
数据结构
相互之间存在一种或多种特定关系的数据元素的集合。
形式定义
数据结构是一个二元组
(D,S)
D是数据元素的有限集,S是D上关系的有限集。
数据的结构
逻辑结构
集合结构
线性结构
树形结构
图形结构(网状结构)
存储结构(物理结构)
顺序存储
链接存储
索引存储
散列存储
数据类型
定义
数据类型是一个数据结构和定义在这个数据结构上的一组操作的总称。
原子数据类型
是不可分解的数据类型,如C语言中的整型(int),实型(float),字符型(char),指针类型(*)和空类型(void)等。
结构数据类型
由若干成分(原子类型或结构类型)按某种结构组成的数据类型,结构数据类型可以看作是一种数据结构和定义在其上的一组操作组成的整体。如数组,由若干分量组成,每个分量可以是整数,也可以是数组(如int A[10])。
抽象数据类型(Abstract Data Type,ADT)
一个数学模型以及定义在该模型上的一组操作。
个人认为是一种模板化数据结构,即保留逻辑特性,但它的数据元素没有限制具体的数据类型,比如说一个链表可以是整型的、浮点型的,集合可以套集合等等等等。
三元组表示抽象数据类型。
(D,S,P)
D是数据对象,S是D上的关系集,P是对D的基本操作集。
算法和算法分析
算法
算法
算法是对特定问题求解步骤的一种描述,它是指令的有限序列。
有穷性
算法在执行有穷步后能结束。
确定性
每步都是确切的、无歧义。
可行性
操作可做。
输入
有0个或多个输入。
输出
有一个或多个输出。
算法设计要求
正确性
满足具体问题的需求。
可读性
偏于理解和修改。
健壮性
当输入数据非法时,也能适当反应。
效率高
执行时间少。
空间省
执行中需要的最大存储空间。
时间复杂度
渐进时间复杂度
时间复杂度是问题规模n的函数 f(n)
T(n)=O(f(n))
频度
语句重复执行的次数。
常量阶O(1)
{}
线性阶O(n)
for(i=0;i<n;i++){}
平方阶O($n^2$)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{}
对数阶O(logn)
for(i=0;i<n;i=i*2){}
指数阶O($2^n$)
for(i=1;i<=pow(2,n);i++){}
排列阶O(n!)
for(i=j=1;i<=j;i++,j=j*(j+1)){}
空间复杂度
空间复杂度
算法执行时所需要的存储空间的量度,也是问题规模的函数
S(n)=O(f(n))