我对计算以下代码段中的时间复杂性表示怀疑。
案例1: - for(i = n; i> = 1; i = i / 2 ) printf("%d",i);
案例2: - for(i = 1; i< n; i = i * 2 ) printf("%d",i)
我可以说,上面的代码会针对输入运行 O(N / 2)或 O(log N)时间复杂度吗?
提前致谢。
答案 0 :(得分:1)
需要O(log2(n)),想想这个.i = 1,然后打印结果是1,然后2,4,8,16直到2 ^ x> n,然后在其中做数学,x> ; log2(n),因此时间复杂度为O(log2(n))