数据结构—时间复杂度计算(简单类型)

前言(关于时间复杂度)

定义:

时间复杂度是衡量算法执行时间随问题规模增长而增长的度量。它表示算法执行所需时间的增长率。通常使用大O符号(O)来表示时间复杂度。

时间复杂度描述的是算法运行时间的增长趋势,并不是具体的运行时间。它忽略了常量因素低阶项,关注的是问题规模趋于无穷时,算法执行时间的增长情况。

常见的时间复杂度:

常见的时间复杂度有:O(1)(常数时间)、O(log n)(对数时间)、O(n)(线性时间)、O(n log n)(线性对数时间)、O(n^2)(平方时间)等。

作用:

通过分析算法的时间复杂度,我们可以比较不同算法的执行效率,并选择最优的算法来解决问题。时间复杂度越小,算法执行效率越高。但需要注意的是,时间复杂度只是算法效率的粗略度量,实际的执行时间还受到诸如硬件环境、编程语言等因素的影响。

时间复杂度求解

(Ⅰ)一层循环

解题思路:

1°列出循环次数t和每次循环i的变化值

2°确认t与i的关系表达式

3°确认循环停止的条件表达式

4°联立上面两式,解方程

5°去常数项,低次项,最高项系数,写出结果

例题:

【例】

i = n*n;

while(i != 1)

i = i / 2;

【解】

循环次数t:0   1   2   3   ......

每次i的变化:    n^{_2{_{_{}}}}     n^{_2{_{_{}}}} /2     n^{_2{_{_{}}}} /4     n^{_2{_{_{}}}} /8    .......

t与i的关系式: i = n^{_2{_{_{}}}} /2^{^{t}}           ①

循环终止条件: i  =  1               ②

联立①②得        n^{_2{_{_{}}}} /2^{^{t}} = 1

解得      T  = O(\log_{2}n)

下面是三道练习题

(Ⅱ)两层循环

解题思路:

1°列出外层循环中i的变化值

2°根据i的变化值,写出每个i下内层循环的执行次数

3°求和(数列),写结果

例题:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值