考研/专升本 时间复杂度的计算例题

本次素材来源于cctalk 比特就业课

第一题

计算Func1的时间复杂度

第一个for循环执行每执行一次,第二个for循环就要执行n次,所以执行n(n-1)次

第三的for循环执行2n次

while 循环执行10次,所以总共是n(n-1)+2n+10次,时间复杂度为0(n^{2})

第二题

这里分两种情况:

(1)如果题目说明了m和n的大小关系:

        m>n:时间复杂度为O(m)

        m=n:时间复杂度为O(m)或O(n)

        m<n:时间复杂度为O(n)

(2)题目没说明:O(m+n)

第三题

第四题

这题查找字符串,假设字符串长度为N。

最好情况:第一个字符为目标字符O(1),最坏情况O(N).

时间复杂度是求最坏情况的时间,所以这题时间复杂度为O(n)

第五题:冒泡排序求时间复杂度

冒泡排序的原理是依次向后比较,如大于后一位则交换顺序。

所以第一趟冒泡要执行n次,第二趟冒泡执行n-1次,........所以是一个等差数列(n+1)n/2

所以时间复杂度为O(n^{2}

第五题:折半查找/二分查找

O(\log_2{n})

第六题:递归求时间复杂度

   

 二.空间复杂度的计算

空间复杂度:不是具体比特位大小,而是模糊的空间个数,也是用大O渐进表示

第一题:冒泡排序的空间复杂度

这里一共定义了5个变量以及参数,形参*a(这里表示的是数组a的第一个元素的首地址)、n、end、i、exchange,所以空间为5是个常数。

所以空间复杂度为O(1)

注意:时间是累计的,空间是不变的,虽然每次循环都建立一个变量,但是空间是不变的

第二题

这里有6+n个变量/参数 五个:n、fibArray、fibArray【0】,fibArray【1】

        还有一个是malloc函数创建了一个含有n+1个空间的数组

malloc 是开辟一个数组,这里是n+1个容量的数组。所以空间复杂度是 O(n)

第三题 递归以及栈帧问题的空间复杂度

        递归的栈帧问题:每当递归一次都会创建一个空间,这里创建了N层。但返回时,每返回一次就销毁一个空间,所以空间过程为O(1)->O(N)->O(1)。但空间复杂度与时间复杂度一样取最高值。所以时间复杂度为O(n)

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值