algorithm - 这段代码的时间复杂度是多少? (log3n)

标签 algorithm time-complexity complexity-theory

我有这段代码,我必须知道它的时间复杂度,我是这个主题的初学者,它让我有点困惑。

void func(int n){
   while(n > 0 && n % 3 ==0){
       do_computation(n);
       n = n/3;
   }
}

函数do_computatation的时间复杂度为1,那么func最坏的情况将是O(log3n) 是这样吗?

最佳答案

是的,它是 O(log3n),但这与 O(log n) 相同。基数并不重要,因为 logan = (logab)(logbn),而常数因子则无关紧要事情。

编辑:

log(ab) = b log(a)(任意基数)

n = blogbn
取两边的loga:
logan = loga(blogbn)
=(logbn)(logab)

关于algorithm - 这段代码的时间复杂度是多少? (log3n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63766198/

相关文章:

algorithm - 术语 "VISITED"的 BFS 和正确性

python - 为什么要在解决方案中添加 +1

java - 打印出小于给定数 N 的素数

java - 我将如何在 Big Theta Θ 表示法下分析该算法的形式复杂性?

javascript - 为什么这个对象没有被正确解析?

algorithm - 从消息到达时间戳中提取周期性

algorithm - 试图找出时间复杂性

java - 使用牛顿法求平方根的时间复杂度

php - 在 PHP 中搜索数组,性能改进

sorting - 从行已排序的 n x m 数组中按升序打印数字