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
Algorithm for循环的计算复杂度与我自己相矛盾_Algorithm_Complexity Theory_Big O_Asymptotic Complexity - Fatal编程技术网

Algorithm for循环的计算复杂度与我自己相矛盾

Algorithm for循环的计算复杂度与我自己相矛盾,algorithm,complexity-theory,big-o,asymptotic-complexity,Algorithm,Complexity Theory,Big O,Asymptotic Complexity,通过分析程序的运行时间,我发现了一个矛盾。例如,考虑下面的代码: for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { ..... } } for(int i=0;i内部循环执行n次,这需要O(n)。外部循环执行内部循环n次,但您必须考虑这n次外部循环执行中每一次的内部循环成本。这使得O(n*O(n))=O(n^2) for(int i=0 ; i< 7 ; i++) //time complex

通过分析程序的运行时间,我发现了一个矛盾。例如,考虑下面的代码:

for(int i=0;i<n;i++)
{
    for(int j=0;j<n;j++)
    {
         .....
    }
}

for(int i=0;i内部循环执行n次,这需要O(n)。外部循环执行内部循环n次,但您必须考虑这n次外部循环执行中每一次的内部循环成本。这使得O(n*O(n))=O(n^2)

for(int i=0 ; i< 7 ; i++) //time complexity is : (1) + (7+1) + (7)
{
    for(int j=0;j<7;j++) //  time complexity is: (1) + [(7+1)+(7+1)+(7+1)+(7+1)+(7+1)+(7+1)+(7+1)] + (7)
    {
         .....
    }
}
for(inti=0;i<7;i++)//时间复杂度为:(1)+(7+1)+(7)
{

对于(int j=0;j如何来第一个循环将运行n^2次?@Vallabh Patade这就是我反驳的地方。我们说外循环的复杂性是O(n^2)但是它执行n次,我们说代码片段的复杂度是n^2。我知道,但举例来说,如果我们把一个cout语句放在内部循环中,它会输出n^2次,但是如果我们把一个cout放在第一个循环的某个地方,但在内部循环之外,它会输出n次。那么为什么我们说内部循环的复杂度是O(n),而对于外部循环,它是O(n^2)@YasinRazlık:因为计算复杂性不是“循环运行多少次”,而是“例程中的语句执行了多少次”(大致)。在您的例子中,在执行外循环时,内循环中的语句(例如
j++
)运行O(n^2)是的,它是内部循环,运行n^2次,时间复杂度为O(n^2)。而不是外部循环