【问题标题】:Running Time in Big-OBig-O 中的运行时间
【发布时间】:2017-09-22 16:27:29
【问题描述】:

我无法完全理解 Big-O 表示法以及嵌套循环如何影响运行时间。我知道嵌套循环的时间复杂度等于执行最里面的语句的次数,但我只是想检查一下我的理解。

1

count=1
for i=1 to N
    for j=1 to N
        for k=1 to N
            count+=1

既然有 2 个嵌套循环,那就是 O(N3),对吗?


2

count=1
for i=1 to N^2
    for j=1 to N
        count+=1

外循环迭代N2,内循环运行N次,这使得它O(N3),对吗?


3

count=1
for (i=0;i<N;++i)
    for (j=0;j<i*i;++j)
        for (k=0;k<j;++k)
            ++count

这将是 O(N),因为 N 只在第一个 for 循环中被调用?

【问题讨论】:

标签: algorithm big-o


【解决方案1】:

Big O 表示法描述了算法或程序在性能(运行时间、内存需求等)方面如何根据输入量进行扩展。

例如:

  • O(1) 表示无论数据量如何,都需要恒定的时间
  • O(N) 线性扩展:给它五倍的输入,它需要五倍的时间才能完成
  • O(N^2) 二次缩放:例如十倍的输入需要一百倍的时间才能完成

您的第三个示例是 O(N^4),因为这就是 N 的最内层迭代总数的比例。

对于这些简单的情况,您可以计算最里面的迭代次数,但肯定有比这更复杂的算法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多