当前位置:   article > 正文

高级程序员的必备技能:时间复杂度与空间复杂度的计算!一招搞定算法_程序时间复杂度怎么算

程序时间复杂度怎么算

常数阶 O(1)

无论代码执行了多少行,只要是没有循环等复杂结构,那这个代码的时间复杂度就都是 O(1),如:

int i = 1;
int j = 2;
int k = 1 + 2;

上述代码执行时,单个语句的频度均为 1,不会随着问题规模 n 的变化而变化。因此,算法时间复杂度为常数阶,记作 T(n)=O(1)。这里我们需要注意的是,即便上述代码有成千上万行,只要执行算法的时间不会随着问题规模 n 的增长而增长,那么执行时间只不过是一个比较大的常数而已。此类算法的时间复杂度均为 O(1)。

对数阶 O(log n)

先来看对应的示例代码:

int i = 1; // ①
while (i <= n) {
i = i * 2; // ②
}

在上述代码中,语句①的频度为 1,可以忽略不计。

语句②我们可以看到它是以 2 的倍数来逼近 n,每次都乘以 2。如果用公式表示就是 1_2_2*2…*2 <=n,也就是说 2 的 x 次方小于等于 n 时会执行循环体,记作 2^x <= n,于是得出 x<=logn。也就是说上述循环在执行 logn 次之后,便结束了,因此上述代码的时间复杂度为 O(log n)。

其实上面代码的时间复杂度公式如果精确的来讲应该是:T(n) = 1 + O(log n),但我们上面已经讲到对应的原则,“只保留时间函数中的最高阶项”,因此记作 O(log n)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/731848
推荐阅读
相关标签
  

闽ICP备14008679号