是的,此透视图方案不是排序数组的正确选择。如您所注意到的,它会导致非常不平衡的分区,导致O(N ^ 2)复杂性和非常深的递归级别。
有一些方法可以改善此行为。例如,您可以对像这样的枢轴使用随机索引,也可以
pivotIdx = start + rand() % (end-start+1);选择三位数中值方法(索引范围内第一个,最后一个和中间元素的中位数)。
PS避免堆栈溢出的选项-首先对较短的段调用递归,然后对较长的段调用递归。
https://zh.wikipedia.org/wiki/Quicksort#Choice_of_pivot
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)