运行时间为O(n^3 log n),执行2个循环
Execute with a run time of O(n^3 log n) with 2 loops
我已经想了一段时间了,但我就是弄不明白。任何帮助都会很好。我在用C++编程。
使用两个循环结构查找O(n^3-logn)的运行时间。
假设这是一个家庭作业,这里有一个提示:您需要在两个嵌套循环中放入一个O(N*LogN)
操作,这样该操作就不需要循环。
例如,可以从N
项的数组开始,在i
和j
上执行嵌套循环,以反转i
和j
之间的数组元素,然后对生成的数组进行排序。反转为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;
}
}
相关文章:
- 在映射擦除c++期间执行循环的次数
- C++-For循环未执行
- 未在函数C++中执行的循环
- 为什么切换 for 循环的顺序会显著改变执行时间?
- 将执行循环拆分为多个线程 (1-N-1-N-1..)
- 在类 c++ 中执行 while 循环
- C++ - 使用用户输入的字符串数据检查结构字符串数据(无限执行 while 循环)
- 如何仅在父循环的所有迭代都为真时才执行嵌套的 if 语句?
- 在"0"输入停止循环之前正确执行 while 循环?
- 为什么其中一个 while 循环没有被执行 (C++)?
- 为什么 std::chrono 在测量循环和编译器优化的并行 OpenMP 的执行时间时不起作用?
- 需要帮助转换以执行循环
- 在CIN为真后,使用一段时间循环,然后执行循环
- 为什么要执行循环五次并停止
- 如何为回调执行循环 (C++)
- 执行循环,直到系统时间到达特定日期/时间
- 如何在执行循环(C++)时使间隔为秒
- C++菜单的“执行”循环.测试大写和小写:
- ICC 未执行循环不变代码移动
- 程序不执行循环