一.概念
数据结构:数据与数据之间的关系
算法:操作数据对象的方法
二.时间复杂度
- 时间复杂度:算法中执行的次数与问题规模n的关系,记作O(f(n))
- 复杂度由繁至简:O(n^2) O(n) O(logn) O(1)
- 数组时间复杂度:访问数组元素个数
所以只抓主要矛盾,也就是只保留最高项,且不要系数:2n->n,1/2n->n 。加法常数->O(1) - 例题:
//O(n)
for(int i=1; i<=n; i++)
tmp +=_ arr[i] ;
}
//O(1)
{
s++;
s = 0;
}
//O(1ogn)
for(int i=1; i<n; i*=2)
++X;
三.空间复杂度
- 空间复杂度:算法中需要的额外空间与问题规模n的关系,也记作O(f(n)),额外空间可理解为申请变量空间的个数,也是只保留最高项,且不要系数。
- 例题:
//空间复杂度0(1)
for(int i=1; i<=n; i++)
++x;
//筛选法求素数空间复杂度0(n)
void Fun(int n)
{
int *arr = (int *)malloc(n);
int *brr = (int *)mal1oc(n);
int i;
for(int =0; i<n; i++)
{
brr[i] = 1;
}