无法分析此函数的运行时
Can't analyze this function's runtime
你好,我有这个问题,但我错了,我就是不明白。
这是关于获取此嵌套循环的准确 运行时间。
具体到"for i=2, inner loop runtime :2n-2"我都能看懂。但是,之后就看不懂了
问题1)
首先,它显示 For i=n, inner loop runtime is n+1
。但从我的角度来看,这没有意义。让我假设 n=3 并且外循环在 i=3 时执行它的最后一个循环,然后 j 将 运行 内循环 3 次(从 3 到 5,因为 j=3=n < 2*n=2*3 =6).但是,答案是 inner loop runtime is n+1
,如果我将 3 放入 n+1
,它会变成 4 次。我不明白为什么这个答案是正确的。
问题2)
如何从 2n+(2n-1)+(2n-2)+...+(n+1)
获得答案 1.5n^2 + 0.5n
的最后一种形式?你能告诉我在数学方面前者如何变成后者的总体步骤吗?具体说说 2n + (2n-1) + (2n-2) + ... + (n+1)
是怎么变成 n*n + (1+2+3+...+n)
的?我认为公式 n(n+1)/2
在这里与 n=(n+1)
一起使用,但它对我不起作用。
这里有没有用到什么公式?
问题 1
你是对的,因为第i个内循环运行时间应该是2n-i,因此对于i=n,内循环运行时间应该是n。答案是错误的。
问题 2
正确答案应该是
2n+(2n-1)+...+n
你可以做的是构造另一个序列和
n+(n+1)+...+2n
你将 2n-i 与 n+i 匹配,对于所有 i=0..n
因此你有 3n 的 (n+1) 项,所以 2 个完全相同序列的总和是 3n(n+1) 因此 1 个序列的总和是 1.5n(n+1)
或者你可以直接套用等差数列和的公式,请参考wiki页面
https://en.wikipedia.org/wiki/Arithmetic_progression
你好,我有这个问题,但我错了,我就是不明白。 这是关于获取此嵌套循环的准确 运行时间。
具体到"for i=2, inner loop runtime :2n-2"我都能看懂。但是,之后就看不懂了
问题1)
首先,它显示 For i=n, inner loop runtime is n+1
。但从我的角度来看,这没有意义。让我假设 n=3 并且外循环在 i=3 时执行它的最后一个循环,然后 j 将 运行 内循环 3 次(从 3 到 5,因为 j=3=n < 2*n=2*3 =6).但是,答案是 inner loop runtime is n+1
,如果我将 3 放入 n+1
,它会变成 4 次。我不明白为什么这个答案是正确的。
问题2)
如何从 2n+(2n-1)+(2n-2)+...+(n+1)
获得答案 1.5n^2 + 0.5n
的最后一种形式?你能告诉我在数学方面前者如何变成后者的总体步骤吗?具体说说 2n + (2n-1) + (2n-2) + ... + (n+1)
是怎么变成 n*n + (1+2+3+...+n)
的?我认为公式 n(n+1)/2
在这里与 n=(n+1)
一起使用,但它对我不起作用。
这里有没有用到什么公式?
问题 1
你是对的,因为第i个内循环运行时间应该是2n-i,因此对于i=n,内循环运行时间应该是n。答案是错误的。
问题 2
正确答案应该是
2n+(2n-1)+...+n
你可以做的是构造另一个序列和
n+(n+1)+...+2n
你将 2n-i 与 n+i 匹配,对于所有 i=0..n 因此你有 3n 的 (n+1) 项,所以 2 个完全相同序列的总和是 3n(n+1) 因此 1 个序列的总和是 1.5n(n+1)
或者你可以直接套用等差数列和的公式,请参考wiki页面 https://en.wikipedia.org/wiki/Arithmetic_progression