Time 非正统嵌套for循环的时间复杂度
我已经阅读了一些关于时间复杂性和循环的帖子,并对以下嵌套for循环的时间复杂性提出了一个问题,以确保我的解决方案:Time 非正统嵌套for循环的时间复杂度,time,time-complexity,complexity-theory,Time,Time Complexity,Complexity Theory,我已经阅读了一些关于时间复杂性和循环的帖子,并对以下嵌套for循环的时间复杂性提出了一个问题,以确保我的解决方案: for(int i = 0; i < n; i++){ for(int j = n; j > i; j--){ #print something }} for(int i=0;ii;j--){ #打印一些东西 }} 现在我知道外循环的时间复杂度是O(n),因为迭代次数是n。 然而,我猜想内部循环应该只迭代n/2次,因为当我向上计数时,j以相同的方式从
for(int i = 0; i < n; i++){
for(int j = n; j > i; j--){
#print something
}}
for(int i=0;ii;j--){
#打印一些东西
}}
现在我知道外循环的时间复杂度是O(n),因为迭代次数是n。
然而,我猜想内部循环应该只迭代n/2次,因为当我向上计数时,j以相同的方式从n向0递减。因此,内部循环应该在n/2次迭代后停止。
因此,我建议时间复杂度为O(n*n/2)或简化的O(n^2)。
我说得对吗?提前感谢。让我们看看循环是如何运行的:
- i=0=>j将从1运行到n=>n次
- i=1=>j将运行2到n=>(n-1)次
- i=2=>j将运行3到n=>(n-2)次
- i=n-1=>j将从n运行到n=>1次
n + (n-1) + (n-2) + .... + 1 = n*(n+1)/2
这等于O(n^2)。是的,你的结论是正确的。为什么这是“非正统的”?而且,尽管内部循环的平均运行次数是N/2,但它会因i的变化而变化。