考虑快速排序算法。假设有一个过程可以找到一个主元元素,它将列表分成两个子列表,每个子列表至少包含五分之一的元素。令 T(n) 是排序 n 个元素所需的比较次数。然后
(A) T(n) <= 2T(n/5) + n
(B) T(n) <= T(n/5) + T(4n/5) + n
(C) T(n) <= 2T(4n/5) + n
(D) T(n) <= 2T(n/2) + n答案:(乙)
说明:对于n/5个元素在一个子集中的情况,第一个有n/5个元素的子集需要T(n/5)次比较,T(4n/5)是其余4n/5个元素的比较,并且n 用于寻找枢轴。
如果一个集合中有超过 n/5 个元素,那么其他集合的元素将少于 4n/5 个,时间复杂度将小于 T(n/5) + T(4n/5) + n,因为递归树将是更平衡。
这个问题的测验