根据伪代码计算时间复杂度O(n)
计算一段代码的时间复杂度, 就是求O(f(n))的过程,就是求 执行次数与规模n的一个不等式的过程
例子:
结合图-2,我们主要来分析第二行这个外循环语句:
第一次执行,i=1执行一次循环体,i更新为2
第二次执行,i=2执行一次循环体,i更新为4
第三次执行,i=4执行一次循环体,i更新为8
第四次执行,i=8执行一次循环体,i更新为16
...
我们设在第x次执行,那么此时输入的i = 2^(t-1) ,执行完本次循环,i会更新成2^x
我们这里可以指定第t次迭代作为最后一次i的迭代,就是说i=2^t ,不再满足进入循环的条件,即i=2^t >= n
那该i迭代的次数就是t(如果单次循环执行次数都为1的普通语句的话)
*需要明晰的是,我们这的次数t是 循环体执行的最大次数,在该次数的执行完毕后,下一次的输入i值不满足循环条件,从此终止循环,循环判断语句则是执行t+1次
其实本题就是找 "第几次迭代-i的值-规模n" 的关系,找到之后就明了了
容易看出,每个单个内循环的执行次数就是i,如此可得
发现图-3的t与我们所说的t相差一,这是因为所设的t不一样的缘故,我的t是迭代次数,而图中答案里意思是"循环体迭代t+1次",我是从1开始计数,而答案里是从0开始计数,按照我们所设的t,求出来的结果
T=2^t-1,根据所求的两个不等式,得出n+1=<T<2n+1,结果仍然是O(n),所以都一样的
巩固练习:
还是选择从0开始计数,这样更像计算机专业
解答:
最后O(n)=nlog2n
(错误较多,等待后期勘误)
两个easy题目答案分析:
图中第零次 指的是未进循环的初值 的情况,这样写可读性更高.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)