我有这段代码,我必须知道它的时间复杂度,我是这个主题的初学者,它让我有点困惑。
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/