这种修改后的选择排序算法的运行时间是多少?

时间:2014-07-02 09:28:55

标签: algorithm time-complexity selection-sort

我准备进行软件开发人员访谈和审核算法。我坚持要问一个问题"给定一个修改后的选择排序算法,该算法按照排序顺序返回 k 大小为 n 的数组中的最小元素在 n k 方面最糟糕的运行时间是什么?"

修改选择排序算法:

A = [1...n]  //an array of size n

for i = 1 to k
  smallest = A[i]
  for j = i + 1 to n
    if A[j] < A[smallest]
      smallest = j
  swap (A[i], A[smallest])

我猜它是O(nk)但不确定原因。

2 个答案:

答案 0 :(得分:3)

外循环运行k次。对于外循环的每次迭代,内循环进行O(n)次迭代。

在数学上,内循环运行:

(n-1) + (n-2) + (n-3) + .... + (n-k) times
= n*k - k*(k+1)/2
= k* (n - k/2 -1/2)
~ k * n

Hence, Complexity = O(n*k)

答案 1 :(得分:2)

O(nk)

外循环选择k元素和内循环选择n元素