for循环除以一半然后表现得像logn的复杂性是多少?

时间:2018-02-24 09:15:51

标签: algorithm time-complexity big-o

for(int i=n/2; i>=1 ; i=i/2)
statement1;

这个循环的最坏情况(big-o)是什么?我检查了一下,所以,我得到了这些结果:

如果N = 100,则将N除以一半,50,之后,它将启动logn行为,如50,25,12,6,3,1。同样的事情在下面详细阐述:

  1. 如果N = 100 => N / 2 => N = 50
  2. N = 50 => 50,25,12,6,3,1
  3. 从上面的结果,我知道,第一行给出N / 2,这意味着O(N),下一行表现得像Log(N)。有两件事可以发生。

    • 可以是O(logn)
    • 它可以小于O(logn)

1 个答案:

答案 0 :(得分:-1)

这件事其实我想问。 “如果问题是O(n),问题的一半也是O(n)。如果问题是O(log n),问题的一半也是O(log n)” 它的意思,

  • 循环划分不会影响总大小。它将保持为O(n)
  • 之后,i = i / 2,将给出复杂度O(logn)。