请您解释一下2种算法的执行时间T(n)是多少? 假设执行时间T(n)=#执行(a:= a + 1)
算法1:
for i ← 1 to n do
for j ← 1 to i do
for k ← j to i+j do
a ← a + 1
end for
end for
end for
算法2:
for i ← 1 to m do
for j ← 1 to i^2 do
for k ← 1 to j do
a ← a + 1
end for
end for
end for
答案 0 :(得分:1)
执行时间T(n)可以通过计算发生的原子操作的数量来找到(例如,将值a+1
赋值给a
)。在这种情况下,计算数字操作并不是那么困难,因为在每个算法中,您只有一个操作,并且它执行的次数由循环的固定边界控制。
因为这是家庭作业(或听起来像这样)我不打算进行计算,但你是否了解嵌套循环以确定每个人的身体执行次数?
答案 1 :(得分:1)
以下是您如何处理这些问题:
对于第一个,计算出最内层循环执行的次数与i
和j
的函数关系。拨打此号码f(i, j)
。然后我们注意到
sum(i = 1 to n) sum(j = 1 to i) f(i, j)
将是理想的答案。那么这是计算这笔钱的问题。我会给你一个提示:答案包括知道如何对连续的正方形和连续的整数求和。 (我100%肯定你的教授在课堂上讨论了这个问题。)
对于第二种,同样接近它。对于这个,你需要知道连续四次幂的总和,以及连续的平方和。
我对这两个方面都有答案;如果你愿意,发布一个解决方案,我会检查我的并提供意见。
答案 2 :(得分:0)
对于这些算法,您应该尝试根据n(或算法2中的m)得到a的表达式。对于这些算法,该表达式将是多项式。该多项式的阶数实际上是该算法的O(n)复杂度。现在有了这个提示,你应该能够完成作业。