运行时间:使用Selection Sort查找k最小元素

时间:2011-11-22 00:25:24

标签: algorithm code-analysis

我想答案是kn?但是当我尝试绘制树时,它看起来像

所以我在更详细的分析中一定做错了什么?

1 个答案:

答案 0 :(得分:3)

首先,您的工作清单长度为k+2时,其长度应为k。我的猜测是你打算从nn-(k-1) = n-k+1

现在,如果你想对连续数字求和,最简单的就是记住(或推导)公式

1 + 2 + ... + a = a(a+1)/2

用这个来计算你所追求的总和是

n(n+1)/2 - (n-k)(n-k+1)/2 = nk + (k-k^2)/2

正如你所发现的那样。现在,考虑一下大O.自n>k以来,我们知道nk > k^2,所以后一个词实际上是一个较低的术语,整个事情是O(nk)