【问题标题】:Time Complexity of one basic example一个基本示例的时间复杂度
【发布时间】:2014-10-29 15:34:11
【问题描述】:

我遇到了一个例子,想计算这段代码的顺序(时间复杂度)。有人可以帮我理解如何计算这段代码的顺序:

f(n)
{
    i=0;
    while (n>0) {
        n=n/10;
        i=i+1;
    }
    return (i);
}

其实我觉得顺序是O(n/10)。有高手可以帮帮我吗?

【问题讨论】:

  • 请格式化伪代码
  • 亲爱的@Cyber​​neticTwerkGuruOrc,请你学我好吗?

标签: algorithm recursion data-structures complexity-theory time-complexity


【解决方案1】:

时间复杂度为O(log n),因为在每次迭代中 n 除以 10。

Master theorem 证明:在你的情况下,a = 1b = 10c = log(a) = 0k = 0,所以T(n)=O(log n)

【讨论】:

  • O(log n)时需要指定base吗?
  • 不 - 它只是乘以一个常数
  • 你能补充一点细节如何使用这个主定理的例子吗?
  • 事实上我不知道为什么 O(n/10) 是假的?
  • 我可以证明它是错误的:O(n) 表示如果 n 翻倍,则时间翻倍。在您的情况下,要仅添加一次迭代,您需要将 n 乘以 10。要将时间加倍,您需要将 n 乘以自身 (n x n)!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 1970-01-01
  • 2015-12-17
  • 2013-10-12
  • 2016-02-13
相关资源
最近更新 更多