三重循环的时间复杂度

时间:2013-09-09 23:02:12

标签: java algorithm complexity-theory

我之前做了什么

Asymptotic analysis of three nested for loops

我正在解决这个算法的时间复杂性。 看到外循环运行n次并且内循环1运行i次,我应用求和并使两个外循环的复杂度为n(n加1)/ 2。 然后内循环执行j次等于j从j的总和为0到j是n(n加1)/ 2。这产生了O(n4)的总复杂度。

问题

Asymptotic analysis of three nested for loops

似乎我的回答是错误的。我在哪里弄错了?

1 个答案:

答案 0 :(得分:2)

你算错了。内循环执行j次,j始终小于n。因此,对于你的每个n(n-1)/ 2次内循环启动,内循环的主体将执行少于n次,这意味着循环的总次数执行最多为n(n-1)/ 2 * O(n),最多为O(n ^ 3)。我认为你做的是重复计算。您尝试使用j的“求和”,这是for (int j...循环执行的总次数。但是这些信息已经包含在您已经进行的计算中,n(n-1)/ 2;再次使用该信息并将其乘以n(n-1)/ 2是重复计算。