3 Experimental setup
In the remainder of this paper, we investigate whether
classic, theoretically non-adaptive sorting algorithms
can show adaptive behavior in practice. We nd that
this indeed is the case|the running times for Quick-
sort, Mergesort, and Heapsort are observed to improve
by factors between 1.5 and 3.5 when the Inv value of
the input goes from high to low. Furthermore, the im-
provements for Quicksort are in very good concordance
with Theorem 1.1, which shows this result to be a likely
explanation for the observed behavior.
In more detail, we study how the number of in-
versions in the input sequence aects the number of
comparisons, the number of element swaps, the num-
ber of branch mispredictions, the running time, and the
number of data cache misses of the version of Quicksort
shown in Figure 1. We also study the behavior of two
variants of Quicksort, namely the randomized version
that chooses the median of three random elements as
a pivot, and the deterministic version that chooses the
middle element as a pivot. Finally, we study the same
questions for the classic sorting algorithms Heapsort and
Mergesort.
The input elements are 4 byte integers. We generate
two types of input, having small di's and large di's,
respectively. We generate a sequence with small di's by
choosing each element xi randomly in [i