在快速排序中,如果我们总是将左侧部分拆分为大小为a
,右侧部分拆分为尺寸为(n-1-a)
,那么递归树的最小高度和最大高度是多少?
当输入数组已经排序时(以非递减或非递增顺序(,并且我们总是选择第一个或最后一个元素作为枢轴时,就会出现快速排序最坏情况(partition不是随机化的。
以输入数组为例:
[1,2,3,4,5]
假设我们选择最左边的元素作为枢轴。所以递归树的构建就像:
n
/
1 n-1(2,3,4,5)
类似地,2将被选为枢轴,形成树:
n
/
1 n-1(2,3,4,5)
/
1 n-2(3,4,5)
观察模式,树的高度将O(N(,也在每个级别分区算法将花费O(N(时间,导致总时间=O(N^2(
递归树的最佳高度是O(logN(,当中位数(中间元素(始终被选为枢轴时,就会发生这种情况。