第一章 绪论


1.学习计算机组成原理+操作系统+语言+数据结构+计算机网络

2.数据

数据元素(链表中的结构体数据),数据项 (结构体中的每一个数据)

数据对象(类似类的对象集合)、数据结构

数据类型 、抽象数据类型(ADT)

3.结构

逻辑结构

物理结构(存储结构)

 

数据类型:int 为原子类型,struct 为结构类型

1.时间复杂度:

int i=1;
whiel(i<n)
{
    i = i*2; //循环条件一直在改变,
}

循环结束时,x为内层执行的总次数,n为输入规模,2{^{x}}>n,因此x=log_{2}n+1

因此T(n) = O(x)=O(log_{2}n)

2.空间复杂度

 算法原地工作:所需的内存量为常量,不会随着算法规模变化

1. 合计:4+4+4n字节,因此空间复杂度为O(n);

void test(int n)//占用4字节
{
    int flag[n]; //占用4n字节
    int i; //占用4字节
}

2. s(n) = O(n^{2})+O(n)+O(1) = O(n^{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 = \frac{(n+1)n}{2}=\frac{1}{2}n^{2}+\frac{1}{2}n,因此空间为O(n^{2}) 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值