gpt4 book ai didi

c++ - 带有 if 语句的嵌套 for 循环的时间复杂度

转载 作者:搜寻专家 更新时间:2023-10-31 00:06:21 24 4
gpt4 key购买 nike

此代码的 if 语句如何影响此代码的时间复杂度?

基于这个问题:Runtime analysis , if 语句中的 for 循环将运行 n*n 次。但在这段代码中,j 超过了 i,因此一旦运行第二个循环,j = i^2。那么这使得第三个 for 循环的时间复杂度是多少呢?我知道第一个 for 循环运行 n 次,第二个运行 n^2 次,第三个运行 n^2 次并触发一定次数。因此,复杂度将由 n*n^2(xn^2) 给出,其中 n 是 if 语句为真的次数。复杂性不仅仅是 O(n^6) 因为 if 语句不正确 n 次,对吗?

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

最佳答案

ji 的倍数时,if 条件为真;当 j 从 0 到 i * i 时,这发生了 i 次,所以第三个 for 循环只运行 i 次。整体复杂度为 O(n^4)。

for (int i = 1; i < n; i++)
{
for (int j = 0; j < i*i; j++) // Runs O(n) times
{
if (j % i == 0) // Runs O(n) × O(n^2) = O(n^3) times
{
for (int k = 0; k < j; k++) // Runs O(n) × O(n) = O(n^2) times
{
sum++; // Runs O(n^2) × O(n^2) = O(n^4) times
}
}
}
}

关于c++ - 带有 if 语句的嵌套 for 循环的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58294341/

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