两路选择排序

设序列的长度为 n,两路选择排序的过程如下:


Python 实现

tim-chow 的 Github


时间复杂度

选择排序中的基础操作是寻找最大的元素和最小的元素,其频度是:

n + (n - 2) + ... + (n - 2 * (i - 1)) + ... + (n - 2 * (n / 2 - 1)) =
(n2 + 2或3 * n) / 4

所以,T(n) = O(n2)。


空间复杂度

O(1)