什么时候内部转移从快速转移到堆垛?

sac*_*ula 6 sorting algorithm introsort

内省排序开始于快速排序并切换时递归深度超过基于元件的数量被分类的水平堆排序.这个数字是多少?是否有特定的范围或限制值?

Gum*_*mbo 6

在该点内省排序算法从快速排序切换到堆排序由下式确定depth_limit:

depth_limit = 2·⎣log 2()⎦

其中是要被排序的序列的长度,所以 = Ñ整个序列.每次递归调用depth_limit减1.当depth_limit达到0时,它会从Quicksort切换到Heapsort.

  • @自.好吧,分成两半是最好的情况; 在最坏的情况下,序列将被分成(1,N-1).在那种情况下,depth_limit达到0. (4认同)