Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 依赖循环的复杂性_Algorithm_Loops_Complexity Theory - Fatal编程技术网

Algorithm 依赖循环的复杂性

Algorithm 依赖循环的复杂性,algorithm,loops,complexity-theory,Algorithm,Loops,Complexity Theory,2我已经开发了一个算法,我正试图以最详细的方式记录它的时间复杂性,我遇到了一个问题 算法如下所示: for i=0:n { task 1; task 2; for j=0:i { task 3; } task 4; } 所以我记录了我的复杂性,说任务1的复杂性为O(t1)。。。 但是当我试图解释任务3时,我被卡住了,因为它基本上要执行I次,我计划说lagorithm的复杂性是任务1+任务2+任务3+任务4复杂性的n倍。由于我将依赖于n,我

2我已经开发了一个算法,我正试图以最详细的方式记录它的时间复杂性,我遇到了一个问题

算法如下所示:

for i=0:n {
    task 1;
    task 2;
    for j=0:i {
        task 3;
    }
    task 4;
}
所以我记录了我的复杂性,说任务1的复杂性为O(t1)。。。 但是当我试图解释任务3时,我被卡住了,因为它基本上要执行I次,我计划说lagorithm的复杂性是任务1+任务2+任务3+任务4复杂性的n倍。由于我将依赖于n,我真的不知道什么是最好的展示方式

我知道如果任务1、2和4不存在,复杂性将是O(n^2)。但我不知道如何与我之前的解释保持一致


我希望这是有道理的,谢谢你的帮助

最简单的方法可能是分别计算

任务3已执行:
1+2+3+…+n
=次

任务1、2和4分别执行
n次

因此(假设每个任务需要
O(1)
),我们的复杂性为

O(n(n+1)/2 + 3n) = O(n²/2 + n/2 + 3n) = O(n²)
(在大O表示法中,可以忽略常数因子和渐近较小项)


更一般地说(如果每个任务不一定需要
O(1)
),我们可以说复杂性是:

O(t3*n² + n*(t1 + t2 + t4))

其中
ti
表示任务
i
所需的时间。

最简单的方法可能是分别计算它们

任务3已执行:
1+2+3+…+n
=次

任务1、2和4分别执行
n次

因此(假设每个任务需要
O(1)
),我们的复杂性为

O(n(n+1)/2 + 3n) = O(n²/2 + n/2 + 3n) = O(n²)
(在大O表示法中,可以忽略常数因子和渐近较小项)


更一般地说(如果每个任务不一定需要
O(1)
),我们可以说复杂性是:

O(t3*n² + n*(t1 + t2 + t4))

其中
ti
表示任务
i
所需的时间。

最简单的方法可能是分别计算它们

任务3已执行:
1+2+3+…+n
=次

任务1、2和4分别执行
n次

因此(假设每个任务需要
O(1)
),我们的复杂性为

O(n(n+1)/2 + 3n) = O(n²/2 + n/2 + 3n) = O(n²)
(在大O表示法中,可以忽略常数因子和渐近较小项)


更一般地说(如果每个任务不一定需要
O(1)
),我们可以说复杂性是:

O(t3*n² + n*(t1 + t2 + t4))

其中
ti
表示任务
i
所需的时间。

最简单的方法可能是分别计算它们

任务3已执行:
1+2+3+…+n
=次

任务1、2和4分别执行
n次

因此(假设每个任务需要
O(1)
),我们的复杂性为

O(n(n+1)/2 + 3n) = O(n²/2 + n/2 + 3n) = O(n²)
(在大O表示法中,可以忽略常数因子和渐近较小项)


更一般地说(如果每个任务不一定需要
O(1)
),我们可以说复杂性是:

O(t3*n² + n*(t1 + t2 + t4))

其中
ti
表示任务
i
需要多长时间。

任务3将执行1+2+3++n=n*(n+1)/2次。因此,任务3的时间复杂度仅为O(n^2)。任务3将执行1+2+3++n=n*(n+1)/2次。因此,任务3的时间复杂度仅为O(n^2)。任务3将执行1+2+3++n=n*(n+1)/2次。因此,任务3的时间复杂度仅为O(n^2)。任务3将执行1+2+3++n=n*(n+1)/2次。因此,任务3的时间复杂度仅为O(n^2)。