数据结构
1.2.1-1.2.2
概念
数据:可被计算机识别并加工处理的对象
数据元素:由数据组成的具有一定意义的基本单位
数据项:组成数据元素的不可分割的最小单位
逻辑结构
线性关系(一对一)
树关系(一对多)
图关系(多对多)
集合关系(同属于一个集合的关系)
存储结构
顺序存储:将逻辑上相关的数据元素按顺序依次存储在连续的存储空间中
链式存储:存储顺序不能体现逻辑关系,需要用指针域存储逻辑上相关的数据元素的地址。一个结点分为元素本身和与该元素逻辑上相关的元素地址。
索引存储
散列存储
运算
搜索
插入
删除
更新
1.3 抽象数据类型
数据类型:
指性质相同的值的集合以及定义在该值集上的运算集合。
抽象数据类型:
对逻辑结构的描述方法
1.4 算法和算法分析
1.4.1 算法
一 算法特征
输入
输出
可行性
确定性
有穷性
二 与程序的区别
算法可以用自然语言伪代码流程图等描述,但程序不行。
1.4.2 时间复杂度
判断:
一般情况下无循环的时间复杂度→O(1)
若计数器平稳变化:
一重循环→O(n)
二重循环→O()
以此类推
若计数器呈几何级数变化:
以二的倍速如1 2 4 8 …变化→O()
以此类推
若循环与两个参数有关→O(m*n)
例题:
i=1;k=0;
do
{
k=k+10*i;i++;
}while(i<=n);
因为是平稳变化且一重循环,所以时间复杂度为O(k*)*O(n)
i=1;x=0;
do
{
x++;i=3*i;
}while(i<n)
因为是几何级数变化(i)所以时间复杂度为O()
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=0;
二重循环,平稳变化所以时间复杂度为O()
y=0;
while(n>=y*y)
y++;
时间复杂度为O()