gpt4 book ai didi

algorithm - 这个 if 语句如何影响时间复杂度?

转载 作者:行者123 更新时间:2023-12-04 10:42:27 25 4
gpt4 key购买 nike

我知道前两个循环是 O(n^3),但我不确定 if 语句如何影响时间复杂度。

int sum = 0;
for(int i = 1; i < n; i++) {
for(int j = 1; j < i * i; j++) {
if(j % i == 0) {
for(int k = 0; k < j; k++) {
sum++;
}
}
}
}

最佳答案

if语句对这段代码的整体复杂性有巨大的影响。

没有如果它是 O(n^5) 但如果它是 O(n^4) .

j范围从 1 to i*i并且 if 仅在 j % i = 0 时有效.

这意味着对于每个 i, j会工作i^2还有i j % i = 0的情况.

因此,整体复杂度将为 O(n^4) .

为了了解它是如何进行的,我只编译了代码:

   static int count;

static void rr(int n)
{
for (int i = 1; i < n; i++)
{
for (int j = 1; j < i * i; j++)
{
if (j % i == 0)
{
for (int k = 0; k < j; k++)
{
count++;
}
}
}
}
}

public static void main(String[] args)
{
for (int n = 50; n < 110; n += 10)
{
count = 0;
rr(n);
System.out.println("For n = " + n + ", Count: " + count);
}
}

这是输出。

如果
For n = 50, Count: 730100
For n = 60, Count: 1531345
For n = 70, Count: 2860165
For n = 80, Count: 4909060
For n = 90, Count: 7900530
For n = 100, Count: 12087075

没有如果
For n = 50, Count: 29688120
For n = 60, Count: 74520894
For n = 70, Count: 162068718
For n = 80, Count: 317441592
For n = 90, Count: 574089516
For n = 100, Count: 975002490

所以,如果复杂度是 O(n^4)。

关于algorithm - 这个 if 语句如何影响时间复杂度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59868331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com