1.学习计算机组成原理+操作系统+语言+数据结构+计算机网络
2.数据
数据元素(链表中的结构体数据),数据项 (结构体中的每一个数据)
数据对象(类似类的对象集合)、数据结构
数据类型 、抽象数据类型(ADT)
3.结构
逻辑结构
物理结构(存储结构)
数据类型:int 为原子类型,struct 为结构类型
1.时间复杂度:
int i=1;
whiel(i<n)
{
i = i*2; //循环条件一直在改变,
}
循环结束时,x为内层执行的总次数,n为输入规模,,因此
因此T(n) = O(x)=O()
2.空间复杂度
算法原地工作:所需的内存量为常量,不会随着算法规模变化
1. 合计:4+4+4n字节,因此空间复杂度为O(n);
void test(int n)//占用4字节
{
int flag[n]; //占用4n字节
int i; //占用4字节
}
2.
void test(int n){
int flag[n][n]; //空间O(n^2)
int other[n]; //空间O(n)
int i //空间O(1)
}
3.递归调用
每次递归都会生三个变量,因此空间复杂 度为k*n,则S(n) = O(kn) = O(n)
void test(int n){ //n为问题规模
int a,b,c; //每次递归都会重新给这三个变量开新的空间
if(n>1) test(n-1); //开始进入递归,n为递归深度
printf("test %d\n",n); //直到触底才执行这个
}
每次调用都重新开一个动态数组,此时开的空间为n+(n-1)+(n-2)...2+1 = ,因此空间为