设序列的长度为 n,两路选择排序的过程如下:
第 1 趟排序:从子序列 array[0 ... n - 1] 中选出最小的元素和最大的元素,然后分别与 0 和 n - 1 位置上的元素进行交换,这样第 1 小的元素和第 1 大的元素会被交换到正确的位置上
...
第 i 趟排序:从子序列 array[i - 1 ... n - i] 中选出最小的元素和最大的元素,然后分别与 i -1 和 n - i 位置上的元素进行交换,这样第 i 小的元素和 第 i 大的元素会被交换到正确的位置上
...
第 n / 2 趟排序:从子序列 array[n / 2 - 1 ... floor(n / 2)] 中选出最小的元素和最大的元素,然后分别与 n / 2 - 1 和 floor(n / 2) 位置上的元素进行互换,这样第 n / 2 小的元素和第 n / 2 大的元素会被交换到正确的位置上
选择排序中的基础操作是寻找最大的元素和最小的元素,其频度是:
n + (n - 2) + ... + (n - 2 * (i - 1)) + ... + (n - 2 * (n / 2 - 1)) = (n2 + 2或3 * n) / 4
所以,T(n) = O(n2)。
O(1)