【问题标题】:Algorithm time complexity analysis算法时间复杂度分析
【发布时间】:2014-01-30 06:41:50
【问题描述】:

我对时间复杂度没有足够的了解,所以我的问题是:

是否有任何直接的公式来计算算法的时间复杂度,例如-我在某处读到这段代码的大 O 是 n*log2(n),所以你能告诉我他们是如何得到这个表达式的吗?

for(i=1;i<=n;i=i*2)

对于这个循环,我无法计算大 O。对于 n=100 的值,这个循环将进行 7 次迭代。这对给定公式有何帮助?

【问题讨论】:

  • O(n^2logn) 的代码示例??????不然怎么解释....
  • for(i=0;i
  • 这个循环是无限的。
  • 对不起,我弄错了,实际上是 for(i=1;i
  • 不是log2(n)?。因为二分查找的复杂度是一样的,索引每次除以2。在本例中乘以2。

标签: time complexity-theory


【解决方案1】:

这个循环本身会遍历ceil(log(n))。那是log(n),对数基数为2。这是因为在ceiling(log(n)) 乘法之后,i 将达到或超过n,对于任何n。一个简单的例子:

对于n=100:

Iteration:      i:
    1           1
    2           2
    3           4
    4           8
    5           16
    6           32
    7           64
    8           128

所以i 将在第 8 次迭代中被检查,并且您不会进入循环,因为它不是 &lt;= 100。如果有另一个内部循环完全循环通过n 次,它将是nlog2(n)。然后将两个循环的两次相乘得到总时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    相关资源
    最近更新 更多