我之前做了什么
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)的总复杂度。
问题
似乎我的回答是错误的。我在哪里弄错了?答案 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是重复计算。