When does introsort shift from quicksort to heapsort?

5.1k Views Asked by At

Introsort begins with quicksort and switches to heapsort when the recursion depth exceeds a level based on the number of elements being sorted. What is that number? Is there a specific range or a limiting value?

2

There are 2 best solutions below

4
On BEST ANSWER

The point at which the Introsort algorithm switches from Quicksort to Heapsort is determined by depth_limit:

depth_limit = 2 · ⎣log2(l)⎦

Where l is the length of the sequence that is to be sorted, so l‍=‍n for the whole sequence. With each recursive call depth_limit is decremented by one. When depth_limit reaches 0, it switches from Quicksort to Heapsort.

1
On

I just tried reading the introductory Wikipedia article. It says

It counts the recursion depth. If a logarithmic depth is exceeded, the algorithm switches to Heapsort from Quicksort to keep the worst case outcome of Quicksort down

and through the Musser's original paper on Introsort.

It says that introsort is slower than heapsort because it performs 2*log(2,N) computations before it switches to heapsort.

My understanding is that recursion depth is 2*log(2,N)

For N=300 elements to sort, it will be 2*8 = 16