快速排序树的最大和最小高度



在快速排序中,如果我们总是将左侧部分拆分为大小为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(,当中位数(中间元素(始终被选为枢轴时,就会发生这种情况。

最新更新