C/C++ 时间复杂度--数据结构(嵌套循环、冒泡排序、二分查找、递归、斐波那契数列的分析)

什么是时间复杂度?

时间复杂度的计算:嵌套循环

时间复杂度的计算:冒泡排序

时间复杂度的计算:二分查找

时间复杂度的计算:递归

时间复杂度的计算:斐波那契数列


什么是时间复杂度?

完成代码所需要的时间

一个算法花费的时间与其中语句的执行次数成正比,所以算法中的基本操作的执行次数,为算法的时间复杂度。

不需要精确的时间复杂度的计算,只需要大概就OK,把对结果影响不大的值给去掉。

使用大O的渐进表示法

O( 1 )不代表是1次而是常数次 

 时间复杂度不要去数循环

时间复杂度的计算:嵌套循环

外循环走一次,内循环走m次

n个外循环,总共走了n*m次

时间复杂度的计算:冒泡排序

该冒泡排序是倒叙

例子:1 2 3 4 5 6 7 8 9 长度为numSize=9

1 需要交换numSize -1=8

2 需要交换numSize -2=7

……

8 需要交换numSize -8=1

9 需要交换numSize -9=0

外层循环是从0numSize-1,遍历每个数

内层循环则是numSize-1-i numSize-2-i…3210

外层每++一次,内层就0numSize-1-i循环一次

依照等差求和公式,内层循环的总和为

n+1/ 2

上外层循环

n*n+1/ 2

加了优化,最少只走外围

时间复杂度O(N^2)

时间复杂度的计算:二分查找

二分查找时间复杂度分析:

假设 共有M个元素

整个一个对折对折再对折的大操作

第一次: M/2

第二: M/4

……

N次:M/2^N

最坏的情况是N次二分之后,每个区间的大小为1,找到想要的元素

M/2^N=1

两边同时取loglogM=N

时间复杂度为OlogM

时间复杂度的计算:递归

第一次从n到1

第二次从n-1到1

第三次从n-2到1

……

第n-3次从4到1

第n-2次从3到1

第n-1次从2到1

n+n-1+n-2+……+3+2+1=n*(n+1)/2

时间复杂度就是O(N^2)

 

 时间复杂度的计算:斐波那契数列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值