我已阅读了几篇关于时间复杂性和循环的帖子,并对下面的嵌套for循环的时间复杂性提出了疑问,以便确保我的解决方案:
for(int i = 0; i < n; i++){
for(int j = n; j > i; j--){
#print something
}}
现在我知道外部循环的时间复杂度是O(n),因为迭代次数是n。 我猜测内循环应该只迭代n / 2次,因为当我向n计数时,j以相同的方式从n向0递减。因此,内循环应在n / 2次迭代后停止。 因此,我建议时间复杂度为O(n * n / 2)或简化O(n ^ 2)。 我对吗?提前谢谢。
答案 0 :(得分:2)
让我们看看循环是如何运行的:
所以添加所有条款,我们得到
n + (n-1) + (n-2) + .... + 1 = n*(n+1)/2
这等于O(n^2)
。所以是的,你的结论是正确的。