谁能建议以下代码的时间复杂度

Van*_*ika 2 c++ time-complexity

根据我的说法,时间复杂度应该是 O(nlogn),因为外循环工作直到 n/2^k =1 并且内循环工作 n 次。谁能告诉我是否正确。

 while(n){ 
  j=n; 
  while(j>1){ 
    j-=1; 
  } 
  n/=2; 
} 
Run Code Online (Sandbox Code Playgroud)

use*_*922 8

内部循环进行n迭代,外部每次迭代除以n2,因此n + n/2 + n/4 + ... = 2n内部循环的总迭代次数为 ,时间复杂度为O(n),而不是O(n log n)

  • 如果任何人都不清楚从“n + n/2 + n/4 + ...”到“2n”的跳转:https://en.wikipedia.org/wiki/Geometric_series#Formula (2认同)