我需要以下问题的帮助:
分析以下程序片段的运行时间,并编写伪代码(在C ++中),该伪代码将输出此代码的值,但将在恒定时间内运行。您可以假定n在程序的前面给出了。
sum = 0
for i from 1 to n-1 do
for j from i to n*n do
sum = sum + i
我要做什么:我知道以下程序片段的时间复杂度为O(n 2 ),并且:
sum = n*n*(n)*(n-1)/2-(n-1)*n*(2*(n-1)+1)/6+(n-1)*n/2;
我不确定如何将其转换为伪代码格式。任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
sum <- n*n*(n)*(n-1)/2-(n-1)*n*(2*(n-1)+1)/6+(n-1)*n/2
仅此而已。当您知道封闭式公式时,就不需要循环。
使用这种公式进行计算具有恒定的时间复杂度