一 1 逻辑结构:
a : 集合结构 数据元素除了同属于一个集合外,它们之间没有其他关系
b : 线性结构 数据元素之间一对一的关系
c : 树形结构 数据元素之间存在一种一对多的层次关系
d : 图形结构 数据元素之间是多对多的关系
2 物理结构
a : 顺序存储结构 是把数据结构存放在地址连续的存储单元里,数据间的逻辑关系与物理关系是一致的
b : 链式存储结构 是把数据结构存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的
二 算法大O推导
1 : 用常数1代表所有加法常数(执行时间恒定)
2 : 在修改后的运行次数函数中,只保留最高阶层
3 : 如果最高阶层存在且不是1,则去除与这个项相乘的常数
a 常数阶
int n=100,sum=0; //一次
sum = (1+n)*n/2; //一次
时间复杂度O(1)
b 线性阶
for(i=0;i<n;i++){/*执行时间复杂度为O(1)的语句*/} //n次
时间复杂度O(n)
c 对数阶
int count=1;
while(count<n){ count = count*2 }
时间复杂度O(logn)
d 平方阶
for(i=0;i<n;i++){ //n次
for(j=0;j<n;j++){//n次
}
}
时间复杂度O(n^2)
常见时间复杂度 O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)