【问题标题】:What is the time complexity of the following code snippet where n is a positive integer:以下代码片段的时间复杂度是多少,其中 n 是正整数:
【发布时间】:2015-12-18 02:11:11
【问题描述】:
s=0; c=n; p=log(n);
for (h=1; h<p; h++) {
 c = c/2;
 for (j=1; j<c; j++) {
  for (k=1; k<=h; k++)
    s++;
 }
}

以下代码sn-p的时间复杂度是多少,其中n为正整数:

【问题讨论】:

  • log(n) 以 2 为底还是任意?

标签: algorithm big-o time-complexity nested-loops


【解决方案1】:

使用 Sigma 表示法,您可以获得准确的迭代次数(假设 log 为底数 2):

您也可以推断出增长的顺序(直观上是线性的,但您可以使用 limits 来证明):

【讨论】:

  • 我认为 OP 没有任何可能的方式来理解这一点。也许你可以使用这个理论并应用到他的具体例子中? (如果适用)
  • 这适用于具体的例子。可以跟踪索引hjk。其余的都是可推断的(例如,cn/2^k,但如果像在算法本身)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 2021-01-13
  • 2014-01-14
  • 2015-03-31
  • 1970-01-01
相关资源
最近更新 更多