四大逻辑结构:
集合结构,线性结构,树形结构,图形结构
时间复杂度空间复杂度
如何分析一个算法的时间复杂度:
用常数1取代运行时间中的所有加法常数,
在修改后的运行次数函数中,只保留最高阶项;
如果最高阶项存在且不是1,则去除这个项相乘的常数;
得到最后的结果就是大O阶。
线性阶:一般含有非嵌套循环涉及线性阶,线性阶就是随着问题的规模n的扩大,对应的计算次数呈直线增长。
O(n)
int i = 0;
for(i=0;i<n;i++){
}
平方阶,多个循环嵌套
O(n^2)
int i = 0;
for(i=0;i<n;i++){
for(i=0;i<n;i++){
}
}
对数阶:通常用于while循环
n = 2^x
x = log2(n)
O(logn)
int i = 2;
int n = 100;
while(i<n){
i*2
}
线性表
由零个或多个数据元素组成的有序序列。
如:队列,链表,串。