基本概念
数据:是所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
数据对象:是性质相同的数据元素的集合。
注:数据元素是数据项的集合;数据元素不是最小单位。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构(物理结构):数据对象在计算机中的存储。
注:同一逻辑结构采用不同的存储方法,可以得到不同的存储结构。
(集合结构:属于同一集合、线性集合:存在一对一的关系、树结构:存在一对多的关系、图结构或网状1结构:存在多对多的关系)
数据类型:是一个值的集合和定义在这个值集上的一组操作的总称。
抽象数据类型:一般指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。
格式:
ADT 抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}ADT 抽象数据类型名
算法的定义及特性
算法:是为了解决某类问题而规定的一个有限长的操作系列。
五个特性:有穷性、确定性、可行性、输入、输出。
评价算法的优劣的基本标准:正确性、可读性、健壮性、高效性、
算法的时间复杂度
衡量算法效率的方法主要有两类:事后统计法和事前分析估算法
和算法执行时间相关的因素:
(1)算法选用的策略
(2)问题规模
(3)编写程序的语言
(4)编译程序产生的机器代码的质量
(5)计算机执行指令的速度
T(n)=O(f(n))
它表示随问题规模n的增大
,算法执行时间的增长率和f(n)的增长率相同
,称为时间复杂度。
常量阶:
for(i=0;i<10000;i++){
x++;
s=0;
}
线性阶:
for(i=0;i<n;i++){
x++;
s=0;
}
平方阶:
x=0;y=0;
for(k=1;k<=n;k++)
x++;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
y++;
空间复杂度
一个程序在机器上执行时,除了需要寄存本身所用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的辅助存储空间,其中对于输入数据所占的具体存储量取决于问题本身,与算法无关。
S(n)=O(f(n))