我无法分析以下内容。
for b = 1 to n
for u = b to n
for i = b to u
Print
我无法确定最坏情况的运行时间。 第一个循环运行n次,第二个循环运行(n(n + 1))/ 2次。 然后我相信第三个循环运行(n + 1)/ 2次。
但是我被告知它的运行时间为O(n ^ 3)。 因此,它的最佳案例运行时不能比最坏情况的运行时更大! 如果可能的话,我希望能朝着正确的方向前进! 谢谢!
答案 0 :(得分:0)
第三个循环在激活时执行打印 u-b + 1 次{3}。
当第二个循环被激活时,第三个循环被激活所有u从b到n,即执行Print 1 + 2 + 3 + ... n-b + 1次(替换u = 1,2,3 ...... {3}中的n。使用triangular numbers的公式,此计数等于(n-b + 1)(n-b + 2)/ 2 {2}。
当第一个循环被激活时,第二个循环被激活,所有b从1到n,即执行Print n(n + 1)/ 2 +(n-1)n / 2 +(n-2)( n-1)/ 2 + ... 1次(在{2}中替换b = 1,2,3 ... n;计数正在减少)。
使用tetrahedral numbers的公式,这等于 n(n + 1)(n + 2)/ 6 {1}。
如果您在使用此方法时遇到问题,可以手动模拟打印件。
对于n = 1
*
对于n = 2
*
* *
*
对于n = 3
*
* *
* * *
*
* *
*
对于n = 4
*
* *
* * *
* * * *
*
* *
* * *
*
* *
*
...
您可以清楚地看到尺寸逐渐减小的三角形图案。三角形的面积随着边的平方而增长。 总体积随着边的立方体增长。