运行时间为O(n^3 log n),执行2个循环

Execute with a run time of O(n^3 log n) with 2 loops

本文关键字:执行 循环 2个 log 运行时间      更新时间:2023-10-16

我已经想了一段时间了,但我就是弄不明白。任何帮助都会很好。我在用C++编程。

使用两个循环结构查找O(n^3-logn)的运行时间。

假设这是一个家庭作业,这里有一个提示:您需要在两个嵌套循环中放入一个O(N*LogN)操作,这样该操作就不需要循环。

例如,可以从N项的数组开始,在ij上执行嵌套循环,以反转ij之间的数组元素,然后对生成的数组进行排序。反转为O(N),排序为O(N*LogN),所以排序占主导地位;两个外环提供剩余的CCD_ 9。排序和反转都可以使用标准库函数来完成,而不需要额外的循环。

似乎几乎任何类型的复杂性都可以通过一个循环结构来实现。在您的情况下,类似于(伪代码):

a := 0
b := 0
c := 0
d := 1
WHILE  a < n  OR  b < n  OR  c < n  OR  d < n  LOOP:
    a := a + 1
    IF  a = n  THEN:
        a := 0
        b := b + 1
        IF  b = n  THEN:
            b := 0
            c := c + 1
            IF  c = n  THEN:
                c := 0
                d := d * 2

我知道这可能不是必需的,但只是为了表明一点——你可以这样做:

int x = 0;
for (int i=0; i<n; ++i) {
  for (int j=0; j<n*n*log(n); ++j) {
    x += j;
  }
}