📜  算法|排序|问题18

📅  最后修改于: 2021-07-02 18:16:43             🧑  作者: Mango

考虑快速排序算法。假设有一个查找数据透视元素的过程,该元素将列表分成两个子列表,每个子列表至少包含元素的五分之一。令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答案: (B)
说明:对于一个子集中n / 5个元素的情况,对于具有n / 5个元素的第一个子集,需要进行T(n / 5)比较,对于其余4n / 5个元素,则需要T(4n / 5)比较,并且n用于查找支点。

如果一个集合中的元素数大于n / 5,则另一集合中的元素数小于4n / 5,时间复杂度将小于T(n / 5)+ T(4n / 5)+ n,因为递归树将是更平衡。
这个问题的测验