SlideShare una empresa de Scribd logo
1 de 294
Descargar para leer sin conexión
Dual-Pivot Quicksort and Beyond
Analysis of Multiway Partitioning and Its Practical Potential
Sebastian Wild
Vortrag zur wissenschaftlichen Aussprache
im Rahmen des Promotionsverfahrens
8. Juli 2016
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 1 / 17
Dual-P??? Q?????? and Beyond
Analysis of Multi??? P??????? and Its Practical Potential
Sebastian Wild
Vortrag zur wissenschaftlichen Aussprache
im Rahmen des Promotionsverfahrens
8. Juli 2016
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 1 / 17
Dual-Pivot Quicksort and Beyond
Analysis of Multiway Partitioning and Its Practical Potential
Sebastian Wild
Vortrag zur wissenschaftlichen Aussprache
im Rahmen des Promotionsverfahrens
8. Juli 2016
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 1 / 17
What is sorting?
What do you think when you hear sorting?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
What is sorting?
What do you think when you hear sorting?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
What is sorting?
What do you think when you hear sorting?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
What is sorting?
What do you think when you hear sorting?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
What is sorting?
What do you think when you hear sorting?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
What is sorting?
Two meanings of sorting
1
Separate different sorts
of things
2
Put items into order
(alphabetical, numerical, ...)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
What is sorting?
Two meanings of sorting
1
Separate different sorts
of things
2
Put items into order
(alphabetical, numerical, ...)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
What is sorting?
Two meanings of sorting
1
Separate different sorts
of things
2
Put items into order
(alphabetical, numerical, ...)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
What is sorting?
Two meanings of sorting
1
Separate different sorts
of things
2
Put items into order
(alphabetical, numerical, ...)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
Model of Computation
How do computers sort?
1 2 3 4 5 6 7 8 9
50 2 75 17 10 78 33 72 98
Input given as array of n items
index-based access (5th item A[5] is 10)
we can read and write cells
Only info about data: pairwise comparisons
Is A[5] < A[8]? Yes, 10 < 72
only relative ranking of elements important
may assume, e.g., numbers 1, . . . , n
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
Model of Computation
How do computers sort?
1 2 3 4 5 6 7 8 9
50 2 75 17 10 78 33 72 98
Input given as array of n items
index-based access (5th item A[5] is 10)
we can read and write cells
Only info about data: pairwise comparisons
Is A[5] < A[8]? Yes, 10 < 72
only relative ranking of elements important
may assume, e.g., numbers 1, . . . , n
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
Model of Computation
How do computers sort?
1 2 3 4 5 6 7 8 9
50 2 75 17 10 78 33 72 98
Input given as array of n items
e.g. Excel rows
index-based access (5th item A[5] is 10)
we can read and write cells
Only info about data: pairwise comparisons
Is A[5] < A[8]? Yes, 10 < 72
only relative ranking of elements important
may assume, e.g., numbers 1, . . . , n
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
Model of Computation
How do computers sort?
1 2 3 4 5 6 7 8 9
50 2 75 17 10 78 33 72 98
Input given as array of n items
e.g. Excel rows
index-based access (5th item A[5] is 10)
we can read and write cells
Only info about data: pairwise comparisons
Is A[5] < A[8]? Yes, 10 < 72
only relative ranking of elements important
may assume, e.g., numbers 1, . . . , n
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
Model of Computation
How do computers sort?
1 2 3 4 5 6 7 8 9
50 2 75 17 10 78 33 72 98
A[5]
10
Input given as array of n items
e.g. Excel rows
index-based access (5th item A[5] is 10)
we can read and write cells
Only info about data: pairwise comparisons
Is A[5] < A[8]? Yes, 10 < 72
only relative ranking of elements important
may assume, e.g., numbers 1, . . . , n
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
Model of Computation
How do computers sort?
1 2 3 4 5 6 7 8 9
50 2 75 17 10 78 33 72 98
A[5]
10
Input given as array of n items
e.g. Excel rows
index-based access (5th item A[5] is 10)
we can read and write cells
Only info about data: pairwise comparisons
Is A[5] < A[8]? Yes, 10 < 72
only relative ranking of elements important
may assume, e.g., numbers 1, . . . , n
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
Model of Computation
How do computers sort?
1 2 3 4 5 6 7 8 9
50 2 75 17 10 78 33 72 98
A[5]
10
A[8]
72
Input given as array of n items
e.g. Excel rows
index-based access (5th item A[5] is 10)
we can read and write cells
Only info about data: pairwise comparisons
Is A[5] < A[8]? Yes, 10 < 72
only relative ranking of elements important
may assume, e.g., numbers 1, . . . , n
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
Model of Computation
How do computers sort?
1 2 3 4 5 6 7 8 9
50 2 75 17 10 78 33 72 98
A[5]
10
A[8]
72
Input given as array of n items
e.g. Excel rows
index-based access (5th item A[5] is 10)
we can read and write cells
Only info about data: pairwise comparisons
Is A[5] < A[8]? Yes, 10 < 72
only relative ranking of elements important
may assume, e.g., numbers 1, . . . , n
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
Model of Computation
How do computers sort?
1 2 3 4 5 6 7 8 9
50 2 75 17 10 78 33 72 98
Input given as array of n items
e.g. Excel rows
index-based access (5th item A[5] is 10)
we can read and write cells
Only info about data: pairwise comparisons
Is A[5] < A[8]? Yes, 10 < 72
only relative ranking of elements important
may assume, e.g., numbers 1, . . . , n
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
Model of Computation
How do computers sort?
1 2 3 4 5 6 7 8 9
50 2 75 17 10 78 33 72 98
1 2 3 4 5 6 7 8 9
5 1 7 3 2 8 4 6 9
Input given as array of n items
e.g. Excel rows
index-based access (5th item A[5] is 10)
we can read and write cells
Only info about data: pairwise comparisons
Is A[5] < A[8]? Yes, 10 < 72
only relative ranking of elements important
may assume, e.g., numbers 1, . . . , n
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
5 1 7 3 2 8 4 6 9
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
5 1 7 3 2 8 4 6 915
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
5 1 7 3 2 8 4 6 9
?
1
min
5
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
5 1 7 3 2 8 4 6 9
?
71
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
5 1 7 3 2 8 4 6 9
? ?
31
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
5 1 7 3 2 8 4 6 9
? ? ?
21
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
5 1 7 3 2 8 4 6 9
? ? ? ?
81
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
5 1 7 3 2 8 4 6 9
? ? ? ? ?
41
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
5 1 7 3 2 8 4 6 9
? ? ? ? ? ?
61
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
5 1 7 3 2 8 4 6 9
? ? ? ? ? ? ?
91
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
5 1 7 3 2 8 4 6 9
? ? ? ? ? ? ? ?
1
min
5
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
5 1 7 3 2 8 4 6 9
? ? ? ? ? ? ? ?
5 7 3 2 8 4 6 95
min
1
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
5 7 3 2 8 4 6 91
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
5 7 3 2 8 4 6 91
to do (by same procedure)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
5 7 3 2 8 4 6 91 75
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
5 7 3 2 8 4 6 91
?
35
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
5 7 3 2 8 4 6 91
? ?
5 3
min
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
5 7 3 2 8 4 6 91
? ?
23
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
5 7 3 2 8 4 6 91
? ? ?
2
min
3
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
5 7 3 2 8 4 6 91
? ? ?
82
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
5 7 3 2 8 4 6 91
? ? ? ?
42
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
5 7 3 2 8 4 6 91
? ? ? ? ?
62
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
5 7 3 2 8 4 6 91
? ? ? ? ? ?
92
min
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
5 7 3 2 8 4 6 91
? ? ? ? ? ? ?
2
min
5
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
7 3 5 8 4 6 952
min
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
7 3 5 8 4 6 92
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2 3 7 5 8 4 6 9
? ? ? ? ? ?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
3 4 5 8 7 6 9
? ? ? ? ?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
3 4 5 8 7 6 9
? ? ? ?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Each round puts one item in place.
Remaining list one smaller.
Can we do better?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Each round puts one item in place.
Remaining list one smaller.
Can we do better?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Each round puts one item in place.
Remaining list one smaller.
Can we do better?
Yes! Finding the minimum
costs the same as computing
the rank
number of elements
smaller than given element
of any element.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final place of some item (pivot),
put small items left, others right (partition).
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
5 1 7 3 2 8 4 6 9
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
5 1 7 3 2 8 4 6 9
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
5 1 7 3 2 8 4 6 9
k g
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
<
5 1 7 3 2 8 4 6 9
k g
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
<
5 1 7 3 2 8 4 6 9
?
k g
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
<
5 1 7 3 2 8 4 6 9
?
k g
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< >
5 1 7 3 2 8 4 6 9
?
k g
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< > >
5 1 7 3 2 8 4 6 9
?
k g
? ?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< > >>
5 1 7 3 2 8 4 6 9
? ? ?
k g
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< > >><
5 1 7 3 2 8 4 6 9
? ? ??
k g
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< >>< >
? ? ??
k g
?
5 1 3 2 8 6 94 7
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< >>< ><
? ? ??
g
?
5 1 4 3 2 8 7 6 9
k g
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< >>< >< <
? ? ??
g
?
5 1 4 3 2 8 7 6 9
?
k g
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< >>< >< < >
? ? ???
5 1 4 3 2 8 7 6 9
? ?
gk
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< >>< >< < >
? ? ???
5 1 4 3 2 8 7 6 9
? ? ?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< >>< >< ><
? ? ???? ? ?
1 4 3 8 7 6 92 5
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< >>< >< ><
? ? ???? ? ?
2 1 4 3 8 7 6 95
reached final place!
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< >>< >< ><
? ? ???? ? ?
2 1 4 3 8 7 6 95
to do to do
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
? ? ???? ? ?
2 1 4 3 8 7 6 95
to do
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
? ? ???? ? ?
2 1 4 3 8 7 6 95
to do
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< > >
? ? ???? ? ?
2 1 4 3 8 7 6 95
to do
? ? ?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< > >
? ? ???? ? ?
to do
? ? ?
1 2 4 3 5 8 7 6 9
to do
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
? ? ???? ? ?
to do
? ? ?
1 2 4 3 5 8 7 6 9
to do
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
? ? ???? ? ?
to do
? ? ?
1 2 3 4 5 8 7 6 9
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
? ? ???? ? ?
to do
? ? ?
1 2 3 4 5 8 7 6 9
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< < >
? ? ???? ? ?
? ? ?
1 2 3 4 5 8 7 6 9
?
? ? ?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
< < >
? ? ???? ? ?
? ? ?
?
? ? ?
1 2 3 4 5 6 7 8 9
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
? ? ???? ? ?
? ? ?
?
? ? ?
1 2 3 4 5 6 7 8 9
to do
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
? ? ???? ? ?
? ? ?
?
? ? ?
1 2 3 4 5 6 7 8 9
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
? ? ???? ? ?
? ? ?
?
? ? ?
1 2 3 4 5 6 7 8 9
?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
? ? ???? ? ?
? ? ?
?
? ? ?
1 2 3 4 5 6 7 8 9
?
16 Comparisons
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
? ? ???? ? ?
? ? ?
?
? ? ?
1 2 3 4 5 6 7 8 9
?
16 Comparisons
Much less comparisons in Quicksort
...unless pivots are max/min!
But average/expected behavior is good.
Quicksort is method of choice in practice.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
? ? ???? ? ?
? ? ?
?
? ? ?
1 2 3 4 5 6 7 8 9
?
16 Comparisons
Much less comparisons in Quicksort
...unless pivots are max/min!
But average/expected behavior is good.
Quicksort is method of choice in practice.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
? ? ???? ? ?
? ? ?
?
? ? ?
1 2 3 4 5 6 7 8 9
?
16 Comparisons
Much less comparisons in Quicksort
...unless pivots are max/min!
But average/expected
(actually: almost always good)
behavior is good.
Quicksort is method of choice in practice.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
What is Quicksort?
How to make a computer sort?
Selectionsort
Find smallest item and put it in place.
? ? ? ? ? ? ? ?
1
? ? ? ? ? ? ?
2
? ? ? ? ? ?
? ? ? ? ?
? ? ? ?
3 4 5 6 7 8 9
? ? ?
? ?
?
36 Comparisons
Quicksort
Find final
kth smallest A[k]
place of some item (pivot),
put small items left, others right (partition).
? ? ???? ? ?
? ? ?
?
? ? ?
1 2 3 4 5 6 7 8 9
?
16 Comparisons
Much less comparisons in Quicksort
...unless pivots are max/min!
But average/expected
(actually: almost always good)
behavior is good.
Quicksort is method of choice in practice.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Many variants tried
Two important tuning options:
1 Choose pivots wisely (pivot sampling)
for example: middle element of three (median-of-three)
pivot never min or max!
2 Split into s 2 subproblems at once (multiway partitioning)
for example: 2 pivots 3 classes: small, medium and large
subproblems are smaller,
but partitioning is more expensive.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Many variants tried
Two important tuning options:
1 Choose pivots wisely (pivot sampling)
for example: middle element of three (median-of-three)
pivot never min or max!
2 Split into s 2 subproblems at once (multiway partitioning)
for example: 2 pivots 3 classes: small, medium and large
subproblems are smaller,
but partitioning is more expensive.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Many variants tried ... many not helpful
Two important tuning options:
1 Choose pivots wisely (pivot sampling)
for example: middle element of three (median-of-three)
pivot never min or max!
2 Split into s 2 subproblems at once (multiway partitioning)
for example: 2 pivots 3 classes: small, medium and large
subproblems are smaller,
but partitioning is more expensive.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Many variants tried ... many not helpful
Two important tuning options:
1 Choose pivots wisely (pivot sampling)
for example: middle element of three (median-of-three)
pivot never min or max!
2 Split into s 2 subproblems at once (multiway partitioning)
for example: 2 pivots 3 classes: small, medium and large
subproblems are smaller,
but partitioning is more expensive.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Many variants tried ... many not helpful
Two important tuning options:
1 Choose pivots wisely (pivot sampling)
for example: middle element of three (median-of-three)
pivot never min or max!
2 Split into s 2 subproblems at once (multiway partitioning)
for example: 2 pivots 3 classes: small, medium and large
subproblems are smaller,
but partitioning is more expensive.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Many variants tried ... many not helpful
Two important tuning options:
1 Choose pivots wisely (pivot sampling)
for example: middle element of three (median-of-three)
pivot never min or max!
2 Split into s 2 subproblems at once (multiway partitioning)
for example: 2 pivots 3 classes: small, medium and large
subproblems are smaller,
but partitioning is more expensive.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Many variants tried ... many not helpful
Two important tuning options:
1 Choose pivots wisely (pivot sampling)
for example: middle element of three (median-of-three)
pivot never min or max!
2 Split into s 2 subproblems at once (multiway partitioning)
for example: 2 pivots 3 classes: small, medium and large
subproblems are smaller,
but partitioning is more expensive.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Many variants tried ... many not helpful
Two important tuning options:
1 Choose pivots wisely (pivot sampling)
for example: middle element of three (median-of-three)
pivot never min or max!
2 Split into s 2 subproblems at once (multiway partitioning)
for example: 2 pivots 3 classes: small, medium and large
subproblems are smaller,
but partitioning is more expensive.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Many variants tried ... many not helpful
Two important tuning options:
1 Choose pivots wisely (pivot sampling)
for example: middle element of three (median-of-three)
pivot never min or max!
2 Split into s 2 subproblems at once (multiway partitioning)
for example: 2 pivots 3 classes: small, medium and large
subproblems are smaller,
but partitioning is more expensive.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Many variants tried ... many not helpful
Two important tuning options:
1 Choose pivots wisely (pivot sampling)
for example: middle element of three (median-of-three)
pivot never min or max!
2 Split into s 2 subproblems at once (multiway partitioning)
for example: 2 pivots 3 classes: small, medium and large
subproblems are smaller,
but partitioning is more expensive.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Many variants tried ... many not helpful
Two important tuning options:
1 Choose pivots wisely (pivot sampling)
for example: middle element of three (median-of-three)
pivot never min or max!
2 Split into s 2 subproblems at once (multiway partitioning)
for example: 2 pivots 3 classes: small, medium and large
subproblems are smaller,
but partitioning is more expensive.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Many variants tried ... many not helpful
Two important tuning options:
1 Choose pivots wisely (pivot sampling)
for example: middle element of three (median-of-three)
pivot never min or max!
2 Split into s 2 subproblems at once (multiway partitioning)
for example: 2 pivots 3 classes: small, medium and large
subproblems are smaller,
but partitioning is more expensive.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Many variants tried ... many not helpful
Two important tuning options:
1 Choose pivots wisely (pivot sampling)
for example: middle element of three (median-of-three)
pivot never min or max!
2 Split into s 2 subproblems at once (multiway partitioning)
for example: 2 pivots 3 classes: small, medium and large
subproblems are smaller,
but partitioning is more expensive.
conventional
wisdom
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Variants of Quicksort
It is tempting to try to develop ways to improve quicksort:
a faster sorting algorithm is computer science’s “better mousetrap,”
and quicksort is a venerable method that seems to invite tinkering.
R. Sedgewick and K. Wayne, Algorithms 4th ed.
Many variants tried ... many not helpful
Two important tuning options:
1 Choose pivots wisely (pivot sampling)
for example: middle element of three (median-of-three)
pivot never min or max!
2 Split into s 2 subproblems at once (multiway partitioning)
for example: 2 pivots 3 classes: small, medium and large
subproblems are smaller,
but partitioning is more expensive.
conventional
wisdom
till 2009!
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
Java 7’s Dual-Pivot Quicksort
What happened in 2009? Java
used e.g. for Android apps
7 sorting method was released!
till 2009, Java used classic Quicksort
Java 7 uses new dual-pivot Quicksort
started as hobby project
by Vladimir Yaroslavskiy
20 % faster than
highly-tuned Java 6!
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
Java 7’s Dual-Pivot Quicksort
What happened in 2009? Java
used e.g. for Android apps
7 sorting method was released!
till 2009, Java used classic Quicksort
Java 7 uses new dual-pivot Quicksort
started as hobby project
by Vladimir Yaroslavskiy
20 % faster than
highly-tuned Java 6!
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
Java 7’s Dual-Pivot Quicksort
What happened in 2009? Java
used e.g. for Android apps
7 sorting method was released!
till 2009, Java used classic Quicksort
Java 7 uses new dual-pivot Quicksort
started as hobby project
by Vladimir Yaroslavskiy
20 % faster than
highly-tuned Java 6!
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
Java 7’s Dual-Pivot Quicksort
What happened in 2009? Java
used e.g. for Android apps
7 sorting method was released!
till 2009, Java used classic
as in example before
+ median-of-three
+ Insertionsort
Quicksort
Java 7 uses new dual-pivot Quicksort
started as hobby project
by Vladimir Yaroslavskiy
20 % faster than
highly-tuned Java 6!
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
Java 7’s Dual-Pivot Quicksort
What happened in 2009? Java
used e.g. for Android apps
7 sorting method was released!
till 2009, Java used classic
as in example before
+ median-of-three
+ Insertionsort
Quicksort
Java 7 uses new dual-pivot Quicksort
started as hobby project
by Vladimir Yaroslavskiy
20 % faster than
highly-tuned Java 6!
0 0.5 1 1.5 2
·106
7
8
9
n
time
10−6·nlnn
Java 6 sorting method
(121ms to sort 106 items)
Normalized Java runtimes (in ms).
Average and standard deviation of
1000 random permutations per size.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
Java 7’s Dual-Pivot Quicksort
What happened in 2009? Java
used e.g. for Android apps
7 sorting method was released!
till 2009, Java used classic
as in example before
+ median-of-three
+ Insertionsort
Quicksort
Java 7 uses new dual-pivot Quicksort
started as hobby project
by Vladimir Yaroslavskiy
20 % faster than
highly-tuned Java 6!
0 0.5 1 1.5 2
·106
7
8
9
n
time
10−6·nlnn
Java 6 sorting method
(121ms to sort 106 items)
Normalized Java runtimes (in ms).
Average and standard deviation of
1000 random permutations per size.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
Java 7’s Dual-Pivot Quicksort
What happened in 2009? Java
used e.g. for Android apps
7 sorting method was released!
till 2009, Java used classic
as in example before
+ median-of-three
+ Insertionsort
Quicksort
Java 7 uses new dual-pivot Quicksort
started as hobby project
by Vladimir Yaroslavskiy
20 % faster than
highly-tuned Java 6!
0 0.5 1 1.5 2
·106
7
8
9
n
time
10−6·nlnn
Java 6 sorting method
(121ms to sort 106 items)
Normalized Java runtimes (in ms).
Average and standard deviation of
1000 random permutations per size.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
Java 7’s Dual-Pivot Quicksort
What happened in 2009? Java
used e.g. for Android apps
7 sorting method was released!
till 2009, Java used classic
as in example before
+ median-of-three
+ Insertionsort
Quicksort
Java 7 uses new dual-pivot Quicksort
started as hobby project
by Vladimir Yaroslavskiy
20 % faster than
highly-tuned Java 6!
0 0.5 1 1.5 2
·106
7
8
9
n
time
10−6·nlnn
Java 6 sorting method
Java 7 sorting method
(121ms to sort 106 items)
(93ms to sort 106 items)
Normalized Java runtimes (in ms).
Average and standard deviation of
1000 random permutations per size.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
Java 7’s Dual-Pivot Quicksort
What happened in 2009? Java
used e.g. for Android apps
7 sorting method was released!
till 2009, Java used classic
as in example before
+ median-of-three
+ Insertionsort
Quicksort
Java 7 uses new dual-pivot Quicksort
started as hobby project
by Vladimir Yaroslavskiy
20 % faster than
highly-tuned Java 6!
0 0.5 1 1.5 2
·106
7
8
9
n
time
10−6·nlnn
Java 6 sorting method
Java 7 sorting method
(121ms to sort 106 items)
(93ms to sort 106 items)
Normalized Java runtimes (in ms).
Average and standard deviation of
1000 random permutations per size.
No theoretical explanation for running time known in 2009!
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
Java 7’s Dual-Pivot Quicksort
What happened in 2009? Java
used e.g. for Android apps
7 sorting method was released!
till 2009, Java used classic
as in example before
+ median-of-three
+ Insertionsort
Quicksort
Java 7 uses new dual-pivot Quicksort
started as hobby project
by Vladimir Yaroslavskiy
20 % faster than
highly-tuned Java 6!
0 0.5 1 1.5 2
·106
7
8
9
n
time
10−6·nlnn
Java 6 sorting method
Java 7 sorting method
(121ms to sort 106 items)
(93ms to sort 106 items)
Normalized Java runtimes (in ms).
Average and standard deviation of
1000 random permutations per size.
No theoretical explanation for running time known in 2009!
Only lucky experiments?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
Java 7’s Dual-Pivot Quicksort
What happened in 2009? Java
used e.g. for Android apps
7 sorting method was released!
till 2009, Java used classic
as in example before
+ median-of-three
+ Insertionsort
Quicksort
Java 7 uses new dual-pivot Quicksort
started as hobby project
by Vladimir Yaroslavskiy
20 % faster than
highly-tuned Java 6!
0 0.5 1 1.5 2
·106
7
8
9
n
time
10−6·nlnn
Java 6 sorting method
Java 7 sorting method
(121ms to sort 106 items)
(93ms to sort 106 items)
Normalized Java runtimes (in ms).
Average and standard deviation of
1000 random permutations per size.
No theoretical explanation for running time known in 2009!
Only lucky experiments?
Why did no-one come up with this earlier?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
Java 7’s Dual-Pivot Quicksort
What happened in 2009? Java
used e.g. for Android apps
7 sorting method was released!
till 2009, Java used classic
as in example before
+ median-of-three
+ Insertionsort
Quicksort
Java 7 uses new dual-pivot Quicksort
started as hobby project
by Vladimir Yaroslavskiy
20 % faster than
highly-tuned Java 6!
0 0.5 1 1.5 2
·106
7
8
9
n
time
10−6·nlnn
Java 6 sorting method
Java 7 sorting method
(121ms to sort 106 items)
(93ms to sort 106 items)
Normalized Java runtimes (in ms).
Average and standard deviation of
1000 random permutations per size.
No theoretical explanation for running time known in 2009!
Only lucky experiments?
Why did no-one come up with this earlier?
That was the starting point for my work!
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
Overview of my work
My Thesis
Multiway partitioning has genuine
potential to speed up Quicksort.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 7 / 17
Overview of my work
My Thesis
Multiway partitioning has genuine
potential to speed up Quicksort.
Mathematical Analysis
prove eternal truths
not experiments
Mathematical Analysis
prove eternal truths
not experiments
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 7 / 17
Overview of my work
My Thesis
Multiway partitioning has genuine
potential to speed up Quicksort.
Mathematical Analysis
prove eternal truths
not experiments
What is multiway partitioning?
generalize existing Quicksort variants
generic s-way one-pass partitioning
with pivot sampling
What is multiway partitioning?
generalize existing Quicksort variants
generic s-way one-pass partitioning
with pivot sampling
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 7 / 17
Overview of my work
My Thesis
Multiway partitioning has genuine
potential to speed up Quicksort.
Mathematical Analysis
prove eternal truths
not experiments
What is multiway partitioning?
generalize existing Quicksort variants
generic s-way one-pass partitioning
with pivot sampling
Unified Analysis of Quicksort
costs on average for large inputs
parametric (algorithm and cost measure)
Unified Analysis of Quicksort
costs on average for large inputs
parametric (algorithm and cost measure)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 7 / 17
Overview of my work
My Thesis
Multiway partitioning has genuine
potential to speed up Quicksort.
Mathematical Analysis
prove eternal truths
not experiments
What is multiway partitioning?
generalize existing Quicksort variants
generic s-way one-pass partitioning
with pivot sampling
Unified Analysis of Quicksort
costs on average for large inputs
parametric (algorithm and cost measure)
Cost Measures
generalize models of cost
comparisons
write accesses / swaps
cache misses / scanned elements
branch mispredictions
element-wise charging schemes
Cost Measures
generalize models of cost
comparisons
write accesses / swaps
cache misses / scanned elements
branch mispredictions
element-wise charging schemes
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 7 / 17
Overview of my work
My Thesis
Multiway partitioning has genuine
potential to speed up Quicksort.
Mathematical Analysis
prove eternal truths
not experiments
What is multiway partitioning?
generalize existing Quicksort variants
generic s-way one-pass partitioning
with pivot sampling
Unified Analysis of Quicksort
costs on average for large inputs
parametric (algorithm and cost measure)
Cost Measures
generalize models of cost
comparisons
write accesses / swaps
cache misses / scanned elements
branch mispredictions
element-wise charging schemes
Discussion of Results
influence of
number of pivots
pivot sampling
organization of indices
Discussion of Results
influence of
number of pivots
pivot sampling
organization of indices
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 7 / 17
Overview of my work
My Thesis
Multiway partitioning has genuine
potential to speed up Quicksort.
Mathematical Analysis
prove eternal truths
not experiments
What is multiway partitioning?
generalize existing Quicksort variants
generic s-way one-pass partitioning
with pivot sampling
Unified Analysis of Quicksort
costs on average for large inputs
parametric (algorithm and cost measure)
Cost Measures
generalize models of cost
comparisons
write accesses / swaps
cache misses / scanned elements
branch mispredictions
element-wise charging schemes
Discussion of Results
influence of
number of pivots
pivot sampling
organization of indices
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 7 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.)
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.)
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.)
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.)
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.)
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.)
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.)
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.)
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.)
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C
P[C = ] = 3/12 = 0.25
P[C = ] = 3/12 = 0.25
P[C = ] = 3/12 = 0.25
P[C = ] = 3/12 = 0.25
by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.)
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C
P[C = ] = 3/12 = 0.25
P[C = ] = 3/12 = 0.25
P[C = ] = 3/12 = 0.25
P[C = ] = 3/12 = 0.25
by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.)
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C
P[C = ] = 3/12 = 0.25
P[C = ] = 3/12 = 0.25
P[C = ] = 3/12 = 0.25
P[C = ] = 3/12 = 0.25
by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
= 4 · 1
4
log2(4) = 2
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Entropy
What is entropy?
1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.)
2 Mathematics: information content of a random variable
Definition (Entropy)
Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}.
Its entropy is defined as H(X) = u
i=1 pi log2(1/pi).
probability that X = i
...all clear?
Let’s see an application.
1 2
3
4 5
6
7 8 9
10
11 12
Urn with colored balls.
Alice draws ball X uniformly at random from urn.
Bob wants to guess its color C
P[C = ] = 3/12 = 0.25
P[C = ] = 3/12 = 0.25
P[C = ] = 3/12 = 0.25
P[C = ] = 3/12 = 0.25
by Yes/No-Questions.
Theorem (Shannon’s Source Coding Theorem)
On average, Bob can’t do with less than H(C) questions.
= 4 · 1
4
log2(4) = 2
We say: We must acquire H(C) bits of information to know C.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
Information Theory & Sorting
Where is the connection to sorting?
1 2
3
4 5
6
7 8 9
10
11 12
Now, Alice draws one of the n!
n(n − 1) · · · 2 · 1
possible orderings of n items.
Bob guesses the order by asking comparisons.
Theorem (Information-Theoretic Lower Bound for Sorting)
We cannot sort with less than log2(n!) = n log2(n) ± O(n) comparisons.
Assumptions:
(1) All orderings equally likely.
(2) Only comparisons allowed.asymptotic error term for n → ∞
H(C)
To achieve this bound, every comparison must yield 1 bit of information!
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 9 / 17
Information Theory & Sorting
Where is the connection to sorting?
1 2
3
4 5
6
7 8 9
10
11 12
Now, Alice draws one of the n!
n(n − 1) · · · 2 · 1
possible orderings of n items.
Bob guesses the order by asking comparisons.
Theorem (Information-Theoretic Lower Bound for Sorting)
We cannot sort with less than log2(n!) = n log2(n) ± O(n) comparisons.
Assumptions:
(1) All orderings equally likely.
(2) Only comparisons allowed.asymptotic error term for n → ∞
H(C)
To achieve this bound, every comparison must yield 1 bit of information!
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 9 / 17
Information Theory & Sorting
Where is the connection to sorting?
1 2
3
4 5
6
7 8 9
10
11 12
Now, Alice draws one of the n!
n(n − 1) · · · 2 · 1
possible orderings
= colors
of n items.
Bob guesses the order by asking comparisons.
Theorem (Information-Theoretic Lower Bound for Sorting)
We cannot sort with less than log2(n!) = n log2(n) ± O(n) comparisons.
Assumptions:
(1) All orderings equally likely.
(2) Only comparisons allowed.asymptotic error term for n → ∞
H(C)
To achieve this bound, every comparison must yield 1 bit of information!
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 9 / 17
Information Theory & Sorting
Where is the connection to sorting?
1 2
3
4 5
6
7 8 9
10
11 12
Now, Alice draws one of the n!
n(n − 1) · · · 2 · 1
possible orderings
= colors
of n items.
Bob guesses the order by asking comparisons.
Theorem (Information-Theoretic Lower Bound for Sorting)
We cannot sort with less than log2(n!) = n log2(n) ± O(n) comparisons.
Assumptions:
(1) All orderings equally likely.
(2) Only comparisons allowed.asymptotic error term for n → ∞
H(C)
To achieve this bound, every comparison must yield 1 bit of information!
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 9 / 17
Information Theory & Sorting
Where is the connection to sorting?
1 2
3
4 5
6
7 8 9
10
11 12
Now, Alice draws one of the n!
n(n − 1) · · · 2 · 1
possible orderings
= colors
of n items.
Bob guesses the order by asking comparisons.
Theorem (Information-Theoretic Lower Bound for Sorting)
We cannot sort with less than log2(n!) = n log2(n) ± O(n) comparisons.
Assumptions:
(1) All orderings equally likely.
(2) Only comparisons allowed.asymptotic error term for n → ∞
H(C)
To achieve this bound, every comparison must yield 1 bit of information!
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 9 / 17
Information Theory & Sorting
Where is the connection to sorting?
1 2
3
4 5
6
7 8 9
10
11 12
Now, Alice draws one of the n!
n(n − 1) · · · 2 · 1
possible orderings
= colors
of n items.
Bob guesses the order by asking comparisons.
Theorem (Information-Theoretic Lower Bound for Sorting)
We cannot sort with less than log2(n!) = n log2(n) ± O(n) comparisons.
Assumptions:
(1) All orderings equally likely.
(2) Only comparisons allowed.asymptotic error term for n → ∞
H(C)
To achieve this bound, every comparison must yield 1 bit of information!
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 9 / 17
Information Theory & Sorting
Where is the connection to sorting?
1 2
3
4 5
6
7 8 9
10
11 12
Now, Alice draws one of the n!
n(n − 1) · · · 2 · 1
possible orderings
= colors
of n items.
Bob guesses the order by asking comparisons.
Theorem (Information-Theoretic Lower Bound for Sorting)
We cannot sort with less than log2(n!) = n log2(n) ± O(n) comparisons.
Assumptions:
(1) All orderings equally likely.
(2) Only comparisons allowed.asymptotic error term for n → ∞
H(C)
To achieve this bound, every comparison must yield 1 bit of information!
We can reverse this idea to analyze Quicksort.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 9 / 17
Comparisons in Quicksort
How many comparisons does Quicksort use on average?
Entropy-based analysis:
1 Compute the average information yield: x bit
comparison . (0 < x 1)
What is x? ...stay tuned.
2 Need to learn log2(n!) bits Use
log2(n!)
x
=
1
x
n log2(n) ± O(n) comparisons.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 10 / 17
Comparisons in Quicksort
How many comparisons does Quicksort use on average?
Entropy-based analysis:
1 Compute the average information yield: x bit
comparison . (0 < x 1)
What is x? ...stay tuned.
2 Need to learn log2(n!) bits Use
log2(n!)
x
=
1
x
n log2(n) ± O(n) comparisons.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 10 / 17
Comparisons in Quicksort
How many comparisons does Quicksort use on average?
Entropy-based analysis:
1 Compute the average information yield: x bit
comparison . (0 < x 1)
What is x? ...stay tuned.
2 Need to learn log2(n!) bits Use
log2(n!)
x
=
1
x
n log2(n) ± O(n) comparisons.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 10 / 17
Comparisons in Quicksort
How many comparisons does Quicksort use on average?
Entropy-based analysis:
1 Compute the average information yield: x bit
comparison . (0 < x 1)
What is x? ...stay tuned.
2 Need to learn log2(n!) bits Use
log2(n!)
x
=
1
x
n log2(n) ± O(n) comparisons.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 10 / 17
Comparisons in Quicksort
How many comparisons does Quicksort use on average?
Entropy-based analysis:
1 Compute the average information yield: x bit
comparison . (0 < x 1)
What is x? ...stay tuned.
2 Need to learn log2(n!) bits Use
log2(n!)
x
=
1
x
n log2(n) ± O(n) comparisons.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 10 / 17
Comparisons in Quicksort
How many comparisons does Quicksort use on average?
Entropy-based analysis:
1 Compute the average information yield: x bit
comparison . (0 < x 1)
What is x? ...stay tuned.
2 Need to learn log2(n!) bits Use
log2(n!)
x
=
1
x
n log2(n) ± O(n) comparisons.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 10 / 17
Comparisons in Quicksort
How many comparisons does Quicksort use on average?
Entropy-based analysis:
1 Compute the average information yield: x bit
comparison . (0 < x 1)
What is x? ...stay tuned.
2 Need to learn log2(n!) bits
not mathematically rigorous ...
but correct result!
rigorous proof → dissertation
Use
log2(n!)
x
=
1
x
n log2(n) ± O(n) comparisons.
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 10 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ]
prob. of item to be < P
log2(P[ < ]) − P[ > ] log2(P[ > ])
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ]
prob. of item to be < P
log2(P[ < ]) − P[ > ] log2(P[ > ])
Note: pivot value P is random.
What is its distribution?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ]
prob. of item to be < P
log2(P[ < ]) − P[ > ] log2(P[ > ])
Note: pivot value P is random.
What is its distribution?
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ]
prob. of item to be < P
log2(P[ < ]) − P[ > ] log2(P[ > ])
Note: pivot value P is random.
What is its distribution?
Excursion: Input Models
Typical: Random Permutations
items: 1, . . . , n
all orderings equally likely
We use the equivalent
Uniform Model
n numbers drawn i.i.d. Uniform(0, 1)
i.i.d. random relative ranking
P[ < ] = P, P[ > ] = 1 − P
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ]
prob. of item to be < P
log2(P[ < ]) − P[ > ] log2(P[ > ])
Note: pivot value P is random.
What is its distribution?
Excursion: Input Models
Typical: Random Permutations
items: 1, . . . , n
all orderings equally likely
We use the equivalent
Uniform Model
n numbers drawn i.i.d. Uniform(0, 1)
i.i.d. random relative ranking
P[ < ] = P, P[ > ] = 1 − P
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ]
prob. of item to be < P
log2(P[ < ]) − P[ > ] log2(P[ > ])
Note: pivot value P is random.
What is its distribution?
Excursion: Input Models
Typical: Random Permutations
items: 1, . . . , n
all orderings equally likely
We use the equivalent
Uniform Model
n numbers drawn i.i.d. Uniform(0, 1)
i.i.d. random relative ranking
P[ < ] = P, P[ > ] = 1 − P
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ]
prob. of item to be < P
log2(P[ < ]) − P[ > ] log2(P[ > ])
Note: pivot value P is random.
What is its distribution?
Excursion: Input Models
Typical: Random Permutations
items: 1, . . . , n
all orderings equally likely
We use the equivalent
Uniform Model
n numbers drawn i.i.d. Uniform(0, 1)
i.i.d. random relative ranking
P[ < ] = P, P[ > ] = 1 − P
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ]
prob. of item to be < P
log2(P[ < ]) − P[ > ] log2(P[ > ])
Note: pivot value P is random.
What is its distribution?
Excursion: Input Models
Typical: Random Permutations
items: 1, . . . , n
all orderings equally likely
We use the equivalent
Uniform Model
n numbers drawn i.i.d. Uniform(0, 1)
i.i.d. random relative ranking
P[ < ] = P, P[ > ] = 1 − P
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ]
prob. of item to be < P
log2(P[ < ]) − P[ > ] log2(P[ > ])
Note: pivot value P is random.
What is its distribution?
Excursion: Input Models
Typical: Random Permutations
items: 1, . . . , n
all orderings equally likely
We use the equivalent
Uniform Model
n numbers drawn i.i.d. Uniform(0, 1)
i.i.d. random relative ranking
P[ < ] = P, P[ > ] = 1 − P
same average sorting costs
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ]
prob. of item to be < P
log2(P[ < ]) − P[ > ] log2(P[ > ])
Note: pivot value P is random.
What is its distribution?
Excursion: Input Models
Typical: Random Permutations
items: 1, . . . , n
all orderings equally likely
We use the equivalent
Uniform Model
n numbers drawn i.i.d. Uniform(0, 1)
i.i.d. random relative ranking
P[ < ] = P, P[ > ] = 1 − P
same average sorting costs
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ]
prob. of item to be < P
log2(P[ < ]) − P[ > ] log2(P[ > ])
Note: pivot value P is random.
What is its distribution?
Excursion: Input Models
Typical: Random Permutations
items: 1, . . . , n
all orderings equally likely
We use the equivalent
Uniform Model
n numbers drawn i.i.d. Uniform(0, 1)
i.i.d. random relative ranking
P[ < ] = P, P[ > ] = 1 − P
same average sorting costs
independent & identically distributed
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ]
prob. of item to be < P
log2(P[ < ]) − P[ > ] log2(P[ > ])
Note: pivot value P is random.
What is its distribution?
Excursion: Input Models
Typical: Random Permutations
items: 1, . . . , n
all orderings equally likely
We use the equivalent
Uniform Model
n numbers drawn i.i.d. Uniform(0, 1)
i.i.d. random relative ranking
P[ < ] = P, P[ > ] = 1 − P
same average sorting costs
independent & identically distributed
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ]
prob. of item to be < P
log2(P[ < ]) − P[ > ] log2(P[ > ])
Note: pivot value P is random.
What is its distribution?
Excursion: Input Models
Typical: Random Permutations
items: 1, . . . , n
all orderings equally likely
We use the equivalent
Uniform Model
n numbers drawn i.i.d. Uniform(0, 1)
i.i.d. random relative ranking
P[ < ] = P, P[ > ] = 1 − P
0 1P0 1
P[ < ] P[ > ]
same average sorting costs
independent & identically distributed
Answer: P D
= Uniform(0, 1)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
Excursion: Input Models
Typical: Random Permutations
items: 1, . . . , n
all orderings equally likely
We use the equivalent
Uniform Model
n numbers drawn i.i.d. Uniform(0, 1)
i.i.d. random relative ranking
P[ < ] = P, P[ > ] = 1 − P
0 1P0 1
P[ < ] P[ > ]
same average sorting costs
independent & identically distributed
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
Excursion: Input Models
Typical: Random Permutations
items: 1, . . . , n
all orderings equally likely
We use the equivalent
Uniform Model
n numbers drawn i.i.d. Uniform(0, 1)
i.i.d. random relative ranking
P[ < ] = P, P[ > ] = 1 − P
0 1P0 1
P[ < ] P[ > ]
same average sorting costs
independent & identically distributed
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
Excursion: Input Models
Typical: Random Permutations
items: 1, . . . , n
all orderings equally likely
We use the equivalent
Uniform Model
n numbers drawn i.i.d. Uniform(0, 1)
i.i.d. random relative ranking
P[ < ] = P, P[ > ] = 1 − P
0 1P0 1
P[ < ] P[ > ]
same average sorting costs
independent & identically distributed
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
Excursion: Input Models
Typical: Random Permutations
items: 1, . . . , n
all orderings equally likely
We use the equivalent
Uniform Model
n numbers drawn i.i.d. Uniform(0, 1)
i.i.d. random relative ranking
P[ < ] = P, P[ > ] = 1 − P
0 1P0 1
P[ < ] P[ > ]
same average sorting costs
independent & identically distributed
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
s-way Quicksort with pivot sampling:
s − 1 pivots: P1, . . . , Ps−1
s classes c1, . . . , cs
Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns
0
Example: s = 3, t = (1, 2, 3)
choose pivots from k = 8 sample items
0 10 1
D D
= Dirichlet(t1 + 1, . . . , ts + 1)
E[H(C)] =
s
r=1
tr + 1
k + 1
Hk+1 − H
1
1 + 1
2 + 1
3 + · · · + 1
tr+1
tr+1 · log2(e)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
s-way Quicksort with pivot sampling:
s − 1 pivots: P1, . . . , Ps−1
s classes c1, . . . , cs
Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns
0
Example: s = 3, t = (1, 2, 3)
choose pivots from k = 8 sample items
0 10 1
D D
= Dirichlet(t1 + 1, . . . , ts + 1)
E[H(C)] =
s
r=1
tr + 1
k + 1
Hk+1 − H
1
1 + 1
2 + 1
3 + · · · + 1
tr+1
tr+1 · log2(e)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
s-way Quicksort with pivot sampling:
s − 1 pivots: P1, . . . , Ps−1
s classes c1, . . . , cs
Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns
0
Example: s = 3, t = (1, 2, 3)
choose pivots from k = 8 sample items
0 10 1
D D
= Dirichlet(t1 + 1, . . . , ts + 1)
E[H(C)] =
s
r=1
tr + 1
k + 1
Hk+1 − H
1
1 + 1
2 + 1
3 + · · · + 1
tr+1
tr+1 · log2(e)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
s-way Quicksort with pivot sampling:
s − 1 pivots: P1, . . . , Ps−1
s classes c1, . . . , cs
Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns
0
Example: s = 3, t = (1, 2, 3)
choose pivots from k = 8 sample items
0 10 1
D D
= Dirichlet(t1 + 1, . . . , ts + 1)
E[H(C)] =
s
r=1
tr + 1
k + 1
Hk+1 − H
1
1 + 1
2 + 1
3 + · · · + 1
tr+1
tr+1 · log2(e)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
s-way Quicksort with pivot sampling:
s − 1 pivots: P1, . . . , Ps−1
s classes c1, . . . , cs
Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns
0
Example: s = 3, t = (1, 2, 3)
choose pivots from k = 8 sample items
0 10 1
D D
= Dirichlet(t1 + 1, . . . , ts + 1)
E[H(C)] =
s
r=1
tr + 1
k + 1
Hk+1 − H
1
1 + 1
2 + 1
3 + · · · + 1
tr+1
tr+1 · log2(e)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
s-way Quicksort with pivot sampling:
s − 1 pivots: P1, . . . , Ps−1
s classes c1, . . . , cs
Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns
0
Example: s = 3, t = (1, 2, 3)
choose pivots from k = 8 sample items
0 10 1
D D
= Dirichlet(t1 + 1, . . . , ts + 1)
E[H(C)] =
s
r=1
tr + 1
k + 1
Hk+1 − H
1
1 + 1
2 + 1
3 + · · · + 1
tr+1
tr+1 · log2(e)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
s-way Quicksort with pivot sampling:
s − 1 pivots: P1, . . . , Ps−1
s classes c1, . . . , cs
Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns
0
Example: s = 3, t = (1, 2, 3)
choose pivots from k = 8 sample items
0 10 1
D D
= Dirichlet(t1 + 1, . . . , ts + 1)
E[H(C)] =
s
r=1
tr + 1
k + 1
Hk+1 − H
1
1 + 1
2 + 1
3 + · · · + 1
tr+1
tr+1 · log2(e)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
s-way Quicksort with pivot sampling:
s − 1 pivots: P1, . . . , Ps−1
s classes c1, . . . , cs
Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns
0
Example: s = 3, t = (1, 2, 3)
choose pivots from k = 8 sample items
0 1
U1
0 1
D D
= Dirichlet(t1 + 1, . . . , ts + 1)
E[H(C)] =
s
r=1
tr + 1
k + 1
Hk+1 − H
1
1 + 1
2 + 1
3 + · · · + 1
tr+1
tr+1 · log2(e)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
s-way Quicksort with pivot sampling:
s − 1 pivots: P1, . . . , Ps−1
s classes c1, . . . , cs
Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns
0
Example: s = 3, t = (1, 2, 3)
choose pivots from k = 8 sample items
0 1
U1 U2
0 1
D D
= Dirichlet(t1 + 1, . . . , ts + 1)
E[H(C)] =
s
r=1
tr + 1
k + 1
Hk+1 − H
1
1 + 1
2 + 1
3 + · · · + 1
tr+1
tr+1 · log2(e)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
s-way Quicksort with pivot sampling:
s − 1 pivots: P1, . . . , Ps−1
s classes c1, . . . , cs
Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns
0
Example: s = 3, t = (1, 2, 3)
choose pivots from k = 8 sample items
0 1
U1 U2U3
0 1
D D
= Dirichlet(t1 + 1, . . . , ts + 1)
E[H(C)] =
s
r=1
tr + 1
k + 1
Hk+1 − H
1
1 + 1
2 + 1
3 + · · · + 1
tr+1
tr+1 · log2(e)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
s-way Quicksort with pivot sampling:
s − 1 pivots: P1, . . . , Ps−1
s classes c1, . . . , cs
Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns
0
Example: s = 3, t = (1, 2, 3)
choose pivots from k = 8 sample items
0 1
U1 U2U3 U4
0 1
D D
= Dirichlet(t1 + 1, . . . , ts + 1)
E[H(C)] =
s
r=1
tr + 1
k + 1
Hk+1 − H
1
1 + 1
2 + 1
3 + · · · + 1
tr+1
tr+1 · log2(e)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
s-way Quicksort with pivot sampling:
s − 1 pivots: P1, . . . , Ps−1
s classes c1, . . . , cs
Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns
0
Example: s = 3, t = (1, 2, 3)
choose pivots from k = 8 sample items
0 1
U1 U2U3 U4U5
0 1
D D
= Dirichlet(t1 + 1, . . . , ts + 1)
E[H(C)] =
s
r=1
tr + 1
k + 1
Hk+1 − H
1
1 + 1
2 + 1
3 + · · · + 1
tr+1
tr+1 · log2(e)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
s-way Quicksort with pivot sampling:
s − 1 pivots: P1, . . . , Ps−1
s classes c1, . . . , cs
Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns
0
Example: s = 3, t = (1, 2, 3)
choose pivots from k = 8 sample items
0 1
U1 U2U3 U4U5 U6
0 1
D D
= Dirichlet(t1 + 1, . . . , ts + 1)
E[H(C)] =
s
r=1
tr + 1
k + 1
Hk+1 − H
1
1 + 1
2 + 1
3 + · · · + 1
tr+1
tr+1 · log2(e)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Partitioning Entropy
What is x?
Classic Quicksort:
Always compare with the pivot P
< < < < > > > >
2 1 4 3 5 8 7 6 9
Outcome C is either small or large .
Information yield is H(C) =
−P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ])
E
Average over P
[H(C)] = E −P log2(P) − (1 − P) log2(1 − P)
= −2
1
0
z log2(z) dz
=
1
2
log2(e) ≈ 0.721348
s-way Quicksort with pivot sampling:
s − 1 pivots: P1, . . . , Ps−1
s classes c1, . . . , cs
Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns
0
Example: s = 3, t = (1, 2, 3)
choose pivots from k = 8 sample items
0 1
U1 U2U3 U4U5 U6 U7
0 1
D D
= Dirichlet(t1 + 1, . . . , ts + 1)
E[H(C)] =
s
r=1
tr + 1
k + 1
Hk+1 − H
1
1 + 1
2 + 1
3 + · · · + 1
tr+1
tr+1 · log2(e)
Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential
Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential

Más contenido relacionado

Similar a Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential

Discover deep insights with Salesforce Einstein Analytics and Discovery
Discover deep insights with Salesforce Einstein Analytics and DiscoveryDiscover deep insights with Salesforce Einstein Analytics and Discovery
Discover deep insights with Salesforce Einstein Analytics and DiscoveryNew Delhi Salesforce Developer Group
 
Lec1cgu13updated.ppt
Lec1cgu13updated.pptLec1cgu13updated.ppt
Lec1cgu13updated.pptRahulTr22
 
Data science programming .ppt
Data science programming .pptData science programming .ppt
Data science programming .pptGanesh E
 
Lec1cgu13updated.ppt
Lec1cgu13updated.pptLec1cgu13updated.ppt
Lec1cgu13updated.pptkalai75
 
Lec1cgu13updated.ppt
Lec1cgu13updated.pptLec1cgu13updated.ppt
Lec1cgu13updated.pptAravind Reddy
 
Algorithms Lecture 4: Sorting Algorithms I
Algorithms Lecture 4: Sorting Algorithms IAlgorithms Lecture 4: Sorting Algorithms I
Algorithms Lecture 4: Sorting Algorithms IMohamed Loey
 
No estimates - a controversial way to improve estimation with results-handouts
No estimates - a controversial way to improve estimation with results-handoutsNo estimates - a controversial way to improve estimation with results-handouts
No estimates - a controversial way to improve estimation with results-handoutsVasco Duarte
 
OSMC 2013 | openTSDB - metrics for a distributed world
OSMC 2013 | openTSDB - metrics for a distributed worldOSMC 2013 | openTSDB - metrics for a distributed world
OSMC 2013 | openTSDB - metrics for a distributed worldNETWAYS
 
Efficient Immutable Data Structures (Okasaki for Dummies)
Efficient Immutable Data Structures (Okasaki for Dummies)Efficient Immutable Data Structures (Okasaki for Dummies)
Efficient Immutable Data Structures (Okasaki for Dummies)Tom Faulhaber
 
DevSpace 2018 - Practical Computer Science: What You Need To Know Without Th...
 DevSpace 2018 - Practical Computer Science: What You Need To Know Without Th... DevSpace 2018 - Practical Computer Science: What You Need To Know Without Th...
DevSpace 2018 - Practical Computer Science: What You Need To Know Without Th...Patrick Viafore
 
Basics in algorithms and data structure
Basics in algorithms and data structure Basics in algorithms and data structure
Basics in algorithms and data structure Eman magdy
 
Bis 155 papers learn by doing bis155papers.com
Bis 155 papers learn by doing  bis155papers.comBis 155 papers learn by doing  bis155papers.com
Bis 155 papers learn by doing bis155papers.comleonardjonh19
 
Business Intelligence with SQL Server
Business Intelligence with SQL ServerBusiness Intelligence with SQL Server
Business Intelligence with SQL ServerPeter Gfader
 
Hw09 Analytics And Reporting
Hw09   Analytics And ReportingHw09   Analytics And Reporting
Hw09 Analytics And ReportingCloudera, Inc.
 
A Gentle Introduction to Coding ... with Python
A Gentle Introduction to Coding ... with PythonA Gentle Introduction to Coding ... with Python
A Gentle Introduction to Coding ... with PythonTariq Rashid
 
Time Travelling Analyst: The Things That Only a Time Machine Can Tell Me...
Time Travelling Analyst: The Things That Only a Time Machine Can Tell Me... Time Travelling Analyst: The Things That Only a Time Machine Can Tell Me...
Time Travelling Analyst: The Things That Only a Time Machine Can Tell Me... Ross Spencer
 

Similar a Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential (20)

geekgap.io webinar #1
geekgap.io webinar #1geekgap.io webinar #1
geekgap.io webinar #1
 
Discover deep insights with Salesforce Einstein Analytics and Discovery
Discover deep insights with Salesforce Einstein Analytics and DiscoveryDiscover deep insights with Salesforce Einstein Analytics and Discovery
Discover deep insights with Salesforce Einstein Analytics and Discovery
 
Data Science
Data Science Data Science
Data Science
 
Lec1cgu13updated.ppt
Lec1cgu13updated.pptLec1cgu13updated.ppt
Lec1cgu13updated.ppt
 
Data science programming .ppt
Data science programming .pptData science programming .ppt
Data science programming .ppt
 
Lec1cgu13updated.ppt
Lec1cgu13updated.pptLec1cgu13updated.ppt
Lec1cgu13updated.ppt
 
Lec1cgu13updated.ppt
Lec1cgu13updated.pptLec1cgu13updated.ppt
Lec1cgu13updated.ppt
 
Algorithms Lecture 4: Sorting Algorithms I
Algorithms Lecture 4: Sorting Algorithms IAlgorithms Lecture 4: Sorting Algorithms I
Algorithms Lecture 4: Sorting Algorithms I
 
data science
data sciencedata science
data science
 
No estimates - a controversial way to improve estimation with results-handouts
No estimates - a controversial way to improve estimation with results-handoutsNo estimates - a controversial way to improve estimation with results-handouts
No estimates - a controversial way to improve estimation with results-handouts
 
OSMC 2013 | openTSDB - metrics for a distributed world
OSMC 2013 | openTSDB - metrics for a distributed worldOSMC 2013 | openTSDB - metrics for a distributed world
OSMC 2013 | openTSDB - metrics for a distributed world
 
Efficient Immutable Data Structures (Okasaki for Dummies)
Efficient Immutable Data Structures (Okasaki for Dummies)Efficient Immutable Data Structures (Okasaki for Dummies)
Efficient Immutable Data Structures (Okasaki for Dummies)
 
BDACA - Lecture3
BDACA - Lecture3BDACA - Lecture3
BDACA - Lecture3
 
DevSpace 2018 - Practical Computer Science: What You Need To Know Without Th...
 DevSpace 2018 - Practical Computer Science: What You Need To Know Without Th... DevSpace 2018 - Practical Computer Science: What You Need To Know Without Th...
DevSpace 2018 - Practical Computer Science: What You Need To Know Without Th...
 
Basics in algorithms and data structure
Basics in algorithms and data structure Basics in algorithms and data structure
Basics in algorithms and data structure
 
Bis 155 papers learn by doing bis155papers.com
Bis 155 papers learn by doing  bis155papers.comBis 155 papers learn by doing  bis155papers.com
Bis 155 papers learn by doing bis155papers.com
 
Business Intelligence with SQL Server
Business Intelligence with SQL ServerBusiness Intelligence with SQL Server
Business Intelligence with SQL Server
 
Hw09 Analytics And Reporting
Hw09   Analytics And ReportingHw09   Analytics And Reporting
Hw09 Analytics And Reporting
 
A Gentle Introduction to Coding ... with Python
A Gentle Introduction to Coding ... with PythonA Gentle Introduction to Coding ... with Python
A Gentle Introduction to Coding ... with Python
 
Time Travelling Analyst: The Things That Only a Time Machine Can Tell Me...
Time Travelling Analyst: The Things That Only a Time Machine Can Tell Me... Time Travelling Analyst: The Things That Only a Time Machine Can Tell Me...
Time Travelling Analyst: The Things That Only a Time Machine Can Tell Me...
 

Más de Sebastian Wild

Succint Data Structures for Range Minimum Problems
Succint Data Structures for Range Minimum ProblemsSuccint Data Structures for Range Minimum Problems
Succint Data Structures for Range Minimum ProblemsSebastian Wild
 
Entropy Trees & Range-Minimum Queries in Optimal Average-Case Space
Entropy Trees & Range-Minimum Queries in Optimal Average-Case SpaceEntropy Trees & Range-Minimum Queries in Optimal Average-Case Space
Entropy Trees & Range-Minimum Queries in Optimal Average-Case SpaceSebastian Wild
 
Sesquickselect: One and a half pivot for cache efficient selection
Sesquickselect: One and a half pivot for cache efficient selectionSesquickselect: One and a half pivot for cache efficient selection
Sesquickselect: One and a half pivot for cache efficient selectionSebastian Wild
 
Average cost of QuickXsort with pivot sampling
Average cost of QuickXsort with pivot samplingAverage cost of QuickXsort with pivot sampling
Average cost of QuickXsort with pivot samplingSebastian Wild
 
Nearly-optimal mergesort: Fast, practical sorting methods that optimally adap...
Nearly-optimal mergesort: Fast, practical sorting methods that optimally adap...Nearly-optimal mergesort: Fast, practical sorting methods that optimally adap...
Nearly-optimal mergesort: Fast, practical sorting methods that optimally adap...Sebastian Wild
 
Median-of-k Quicksort is optimal for many equal keys
Median-of-k Quicksort is optimal for many equal keysMedian-of-k Quicksort is optimal for many equal keys
Median-of-k Quicksort is optimal for many equal keysSebastian Wild
 
Quicksort and Binary Search Trees
Quicksort and Binary Search TreesQuicksort and Binary Search Trees
Quicksort and Binary Search TreesSebastian Wild
 

Más de Sebastian Wild (7)

Succint Data Structures for Range Minimum Problems
Succint Data Structures for Range Minimum ProblemsSuccint Data Structures for Range Minimum Problems
Succint Data Structures for Range Minimum Problems
 
Entropy Trees & Range-Minimum Queries in Optimal Average-Case Space
Entropy Trees & Range-Minimum Queries in Optimal Average-Case SpaceEntropy Trees & Range-Minimum Queries in Optimal Average-Case Space
Entropy Trees & Range-Minimum Queries in Optimal Average-Case Space
 
Sesquickselect: One and a half pivot for cache efficient selection
Sesquickselect: One and a half pivot for cache efficient selectionSesquickselect: One and a half pivot for cache efficient selection
Sesquickselect: One and a half pivot for cache efficient selection
 
Average cost of QuickXsort with pivot sampling
Average cost of QuickXsort with pivot samplingAverage cost of QuickXsort with pivot sampling
Average cost of QuickXsort with pivot sampling
 
Nearly-optimal mergesort: Fast, practical sorting methods that optimally adap...
Nearly-optimal mergesort: Fast, practical sorting methods that optimally adap...Nearly-optimal mergesort: Fast, practical sorting methods that optimally adap...
Nearly-optimal mergesort: Fast, practical sorting methods that optimally adap...
 
Median-of-k Quicksort is optimal for many equal keys
Median-of-k Quicksort is optimal for many equal keysMedian-of-k Quicksort is optimal for many equal keys
Median-of-k Quicksort is optimal for many equal keys
 
Quicksort and Binary Search Trees
Quicksort and Binary Search TreesQuicksort and Binary Search Trees
Quicksort and Binary Search Trees
 

Último

Immunoblott technique for protein detection.ppt
Immunoblott technique for protein detection.pptImmunoblott technique for protein detection.ppt
Immunoblott technique for protein detection.pptAmirRaziq1
 
Oxo-Acids of Halogens and their Salts.pptx
Oxo-Acids of Halogens and their Salts.pptxOxo-Acids of Halogens and their Salts.pptx
Oxo-Acids of Halogens and their Salts.pptxfarhanvvdk
 
KDIGO-2023-CKD-Guideline-Public-Review-Draft_5-July-2023.pdf
KDIGO-2023-CKD-Guideline-Public-Review-Draft_5-July-2023.pdfKDIGO-2023-CKD-Guideline-Public-Review-Draft_5-July-2023.pdf
KDIGO-2023-CKD-Guideline-Public-Review-Draft_5-July-2023.pdfGABYFIORELAMALPARTID1
 
Observational constraints on mergers creating magnetism in massive stars
Observational constraints on mergers creating magnetism in massive starsObservational constraints on mergers creating magnetism in massive stars
Observational constraints on mergers creating magnetism in massive starsSérgio Sacani
 
GENERAL PHYSICS 2 REFRACTION OF LIGHT SENIOR HIGH SCHOOL GENPHYS2.pptx
GENERAL PHYSICS 2 REFRACTION OF LIGHT SENIOR HIGH SCHOOL GENPHYS2.pptxGENERAL PHYSICS 2 REFRACTION OF LIGHT SENIOR HIGH SCHOOL GENPHYS2.pptx
GENERAL PHYSICS 2 REFRACTION OF LIGHT SENIOR HIGH SCHOOL GENPHYS2.pptxRitchAndruAgustin
 
LESSON PLAN IN SCIENCE GRADE 4 WEEK 1 DAY 2
LESSON PLAN IN SCIENCE GRADE 4 WEEK 1 DAY 2LESSON PLAN IN SCIENCE GRADE 4 WEEK 1 DAY 2
LESSON PLAN IN SCIENCE GRADE 4 WEEK 1 DAY 2AuEnriquezLontok
 
Science (Communication) and Wikipedia - Potentials and Pitfalls
Science (Communication) and Wikipedia - Potentials and PitfallsScience (Communication) and Wikipedia - Potentials and Pitfalls
Science (Communication) and Wikipedia - Potentials and PitfallsDobusch Leonhard
 
6.1 Pests of Groundnut_Binomics_Identification_Dr.UPR
6.1 Pests of Groundnut_Binomics_Identification_Dr.UPR6.1 Pests of Groundnut_Binomics_Identification_Dr.UPR
6.1 Pests of Groundnut_Binomics_Identification_Dr.UPRPirithiRaju
 
projectile motion, impulse and moment
projectile  motion, impulse  and  momentprojectile  motion, impulse  and  moment
projectile motion, impulse and momentdonamiaquintan2
 
WEEK 4 PHYSICAL SCIENCE QUARTER 3 FOR G11
WEEK 4 PHYSICAL SCIENCE QUARTER 3 FOR G11WEEK 4 PHYSICAL SCIENCE QUARTER 3 FOR G11
WEEK 4 PHYSICAL SCIENCE QUARTER 3 FOR G11GelineAvendao
 
CHROMATOGRAPHY PALLAVI RAWAT.pptx
CHROMATOGRAPHY  PALLAVI RAWAT.pptxCHROMATOGRAPHY  PALLAVI RAWAT.pptx
CHROMATOGRAPHY PALLAVI RAWAT.pptxpallavirawat456
 
whole genome sequencing new and its types including shortgun and clone by clone
whole genome sequencing new  and its types including shortgun and clone by clonewhole genome sequencing new  and its types including shortgun and clone by clone
whole genome sequencing new and its types including shortgun and clone by clonechaudhary charan shingh university
 
linear Regression, multiple Regression and Annova
linear Regression, multiple Regression and Annovalinear Regression, multiple Regression and Annova
linear Regression, multiple Regression and AnnovaMansi Rastogi
 
Replisome-Cohesin Interfacing A Molecular Perspective.pdf
Replisome-Cohesin Interfacing A Molecular Perspective.pdfReplisome-Cohesin Interfacing A Molecular Perspective.pdf
Replisome-Cohesin Interfacing A Molecular Perspective.pdfAtiaGohar1
 
final waves properties grade 7 - third quarter
final waves properties grade 7 - third quarterfinal waves properties grade 7 - third quarter
final waves properties grade 7 - third quarterHanHyoKim
 
DECOMPOSITION PATHWAYS of TM-alkyl complexes.pdf
DECOMPOSITION PATHWAYS of TM-alkyl complexes.pdfDECOMPOSITION PATHWAYS of TM-alkyl complexes.pdf
DECOMPOSITION PATHWAYS of TM-alkyl complexes.pdfDivyaK787011
 

Último (20)

Interferons.pptx.
Interferons.pptx.Interferons.pptx.
Interferons.pptx.
 
Immunoblott technique for protein detection.ppt
Immunoblott technique for protein detection.pptImmunoblott technique for protein detection.ppt
Immunoblott technique for protein detection.ppt
 
Oxo-Acids of Halogens and their Salts.pptx
Oxo-Acids of Halogens and their Salts.pptxOxo-Acids of Halogens and their Salts.pptx
Oxo-Acids of Halogens and their Salts.pptx
 
KDIGO-2023-CKD-Guideline-Public-Review-Draft_5-July-2023.pdf
KDIGO-2023-CKD-Guideline-Public-Review-Draft_5-July-2023.pdfKDIGO-2023-CKD-Guideline-Public-Review-Draft_5-July-2023.pdf
KDIGO-2023-CKD-Guideline-Public-Review-Draft_5-July-2023.pdf
 
PLASMODIUM. PPTX
PLASMODIUM. PPTXPLASMODIUM. PPTX
PLASMODIUM. PPTX
 
Observational constraints on mergers creating magnetism in massive stars
Observational constraints on mergers creating magnetism in massive starsObservational constraints on mergers creating magnetism in massive stars
Observational constraints on mergers creating magnetism in massive stars
 
Let’s Say Someone Did Drop the Bomb. Then What?
Let’s Say Someone Did Drop the Bomb. Then What?Let’s Say Someone Did Drop the Bomb. Then What?
Let’s Say Someone Did Drop the Bomb. Then What?
 
GENERAL PHYSICS 2 REFRACTION OF LIGHT SENIOR HIGH SCHOOL GENPHYS2.pptx
GENERAL PHYSICS 2 REFRACTION OF LIGHT SENIOR HIGH SCHOOL GENPHYS2.pptxGENERAL PHYSICS 2 REFRACTION OF LIGHT SENIOR HIGH SCHOOL GENPHYS2.pptx
GENERAL PHYSICS 2 REFRACTION OF LIGHT SENIOR HIGH SCHOOL GENPHYS2.pptx
 
LESSON PLAN IN SCIENCE GRADE 4 WEEK 1 DAY 2
LESSON PLAN IN SCIENCE GRADE 4 WEEK 1 DAY 2LESSON PLAN IN SCIENCE GRADE 4 WEEK 1 DAY 2
LESSON PLAN IN SCIENCE GRADE 4 WEEK 1 DAY 2
 
Science (Communication) and Wikipedia - Potentials and Pitfalls
Science (Communication) and Wikipedia - Potentials and PitfallsScience (Communication) and Wikipedia - Potentials and Pitfalls
Science (Communication) and Wikipedia - Potentials and Pitfalls
 
6.1 Pests of Groundnut_Binomics_Identification_Dr.UPR
6.1 Pests of Groundnut_Binomics_Identification_Dr.UPR6.1 Pests of Groundnut_Binomics_Identification_Dr.UPR
6.1 Pests of Groundnut_Binomics_Identification_Dr.UPR
 
projectile motion, impulse and moment
projectile  motion, impulse  and  momentprojectile  motion, impulse  and  moment
projectile motion, impulse and moment
 
AZOTOBACTER AS BIOFERILIZER.PPTX
AZOTOBACTER AS BIOFERILIZER.PPTXAZOTOBACTER AS BIOFERILIZER.PPTX
AZOTOBACTER AS BIOFERILIZER.PPTX
 
WEEK 4 PHYSICAL SCIENCE QUARTER 3 FOR G11
WEEK 4 PHYSICAL SCIENCE QUARTER 3 FOR G11WEEK 4 PHYSICAL SCIENCE QUARTER 3 FOR G11
WEEK 4 PHYSICAL SCIENCE QUARTER 3 FOR G11
 
CHROMATOGRAPHY PALLAVI RAWAT.pptx
CHROMATOGRAPHY  PALLAVI RAWAT.pptxCHROMATOGRAPHY  PALLAVI RAWAT.pptx
CHROMATOGRAPHY PALLAVI RAWAT.pptx
 
whole genome sequencing new and its types including shortgun and clone by clone
whole genome sequencing new  and its types including shortgun and clone by clonewhole genome sequencing new  and its types including shortgun and clone by clone
whole genome sequencing new and its types including shortgun and clone by clone
 
linear Regression, multiple Regression and Annova
linear Regression, multiple Regression and Annovalinear Regression, multiple Regression and Annova
linear Regression, multiple Regression and Annova
 
Replisome-Cohesin Interfacing A Molecular Perspective.pdf
Replisome-Cohesin Interfacing A Molecular Perspective.pdfReplisome-Cohesin Interfacing A Molecular Perspective.pdf
Replisome-Cohesin Interfacing A Molecular Perspective.pdf
 
final waves properties grade 7 - third quarter
final waves properties grade 7 - third quarterfinal waves properties grade 7 - third quarter
final waves properties grade 7 - third quarter
 
DECOMPOSITION PATHWAYS of TM-alkyl complexes.pdf
DECOMPOSITION PATHWAYS of TM-alkyl complexes.pdfDECOMPOSITION PATHWAYS of TM-alkyl complexes.pdf
DECOMPOSITION PATHWAYS of TM-alkyl complexes.pdf
 

Dual-Pivot Quicksort and Beyond: Analysis of Multiway Partitioning and Its Practical Potential

  • 1. Dual-Pivot Quicksort and Beyond Analysis of Multiway Partitioning and Its Practical Potential Sebastian Wild Vortrag zur wissenschaftlichen Aussprache im Rahmen des Promotionsverfahrens 8. Juli 2016 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 1 / 17
  • 2. Dual-P??? Q?????? and Beyond Analysis of Multi??? P??????? and Its Practical Potential Sebastian Wild Vortrag zur wissenschaftlichen Aussprache im Rahmen des Promotionsverfahrens 8. Juli 2016 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 1 / 17
  • 3. Dual-Pivot Quicksort and Beyond Analysis of Multiway Partitioning and Its Practical Potential Sebastian Wild Vortrag zur wissenschaftlichen Aussprache im Rahmen des Promotionsverfahrens 8. Juli 2016 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 1 / 17
  • 4. What is sorting? What do you think when you hear sorting? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
  • 5. What is sorting? What do you think when you hear sorting? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
  • 6. What is sorting? What do you think when you hear sorting? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
  • 7. What is sorting? What do you think when you hear sorting? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
  • 8. What is sorting? What do you think when you hear sorting? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
  • 9. What is sorting? Two meanings of sorting 1 Separate different sorts of things 2 Put items into order (alphabetical, numerical, ...) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
  • 10. What is sorting? Two meanings of sorting 1 Separate different sorts of things 2 Put items into order (alphabetical, numerical, ...) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
  • 11. What is sorting? Two meanings of sorting 1 Separate different sorts of things 2 Put items into order (alphabetical, numerical, ...) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
  • 12. What is sorting? Two meanings of sorting 1 Separate different sorts of things 2 Put items into order (alphabetical, numerical, ...) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 2 / 17
  • 13. Model of Computation How do computers sort? 1 2 3 4 5 6 7 8 9 50 2 75 17 10 78 33 72 98 Input given as array of n items index-based access (5th item A[5] is 10) we can read and write cells Only info about data: pairwise comparisons Is A[5] < A[8]? Yes, 10 < 72 only relative ranking of elements important may assume, e.g., numbers 1, . . . , n Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
  • 14. Model of Computation How do computers sort? 1 2 3 4 5 6 7 8 9 50 2 75 17 10 78 33 72 98 Input given as array of n items index-based access (5th item A[5] is 10) we can read and write cells Only info about data: pairwise comparisons Is A[5] < A[8]? Yes, 10 < 72 only relative ranking of elements important may assume, e.g., numbers 1, . . . , n Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
  • 15. Model of Computation How do computers sort? 1 2 3 4 5 6 7 8 9 50 2 75 17 10 78 33 72 98 Input given as array of n items e.g. Excel rows index-based access (5th item A[5] is 10) we can read and write cells Only info about data: pairwise comparisons Is A[5] < A[8]? Yes, 10 < 72 only relative ranking of elements important may assume, e.g., numbers 1, . . . , n Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
  • 16. Model of Computation How do computers sort? 1 2 3 4 5 6 7 8 9 50 2 75 17 10 78 33 72 98 Input given as array of n items e.g. Excel rows index-based access (5th item A[5] is 10) we can read and write cells Only info about data: pairwise comparisons Is A[5] < A[8]? Yes, 10 < 72 only relative ranking of elements important may assume, e.g., numbers 1, . . . , n Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
  • 17. Model of Computation How do computers sort? 1 2 3 4 5 6 7 8 9 50 2 75 17 10 78 33 72 98 A[5] 10 Input given as array of n items e.g. Excel rows index-based access (5th item A[5] is 10) we can read and write cells Only info about data: pairwise comparisons Is A[5] < A[8]? Yes, 10 < 72 only relative ranking of elements important may assume, e.g., numbers 1, . . . , n Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
  • 18. Model of Computation How do computers sort? 1 2 3 4 5 6 7 8 9 50 2 75 17 10 78 33 72 98 A[5] 10 Input given as array of n items e.g. Excel rows index-based access (5th item A[5] is 10) we can read and write cells Only info about data: pairwise comparisons Is A[5] < A[8]? Yes, 10 < 72 only relative ranking of elements important may assume, e.g., numbers 1, . . . , n Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
  • 19. Model of Computation How do computers sort? 1 2 3 4 5 6 7 8 9 50 2 75 17 10 78 33 72 98 A[5] 10 A[8] 72 Input given as array of n items e.g. Excel rows index-based access (5th item A[5] is 10) we can read and write cells Only info about data: pairwise comparisons Is A[5] < A[8]? Yes, 10 < 72 only relative ranking of elements important may assume, e.g., numbers 1, . . . , n Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
  • 20. Model of Computation How do computers sort? 1 2 3 4 5 6 7 8 9 50 2 75 17 10 78 33 72 98 A[5] 10 A[8] 72 Input given as array of n items e.g. Excel rows index-based access (5th item A[5] is 10) we can read and write cells Only info about data: pairwise comparisons Is A[5] < A[8]? Yes, 10 < 72 only relative ranking of elements important may assume, e.g., numbers 1, . . . , n Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
  • 21. Model of Computation How do computers sort? 1 2 3 4 5 6 7 8 9 50 2 75 17 10 78 33 72 98 Input given as array of n items e.g. Excel rows index-based access (5th item A[5] is 10) we can read and write cells Only info about data: pairwise comparisons Is A[5] < A[8]? Yes, 10 < 72 only relative ranking of elements important may assume, e.g., numbers 1, . . . , n Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
  • 22. Model of Computation How do computers sort? 1 2 3 4 5 6 7 8 9 50 2 75 17 10 78 33 72 98 1 2 3 4 5 6 7 8 9 5 1 7 3 2 8 4 6 9 Input given as array of n items e.g. Excel rows index-based access (5th item A[5] is 10) we can read and write cells Only info about data: pairwise comparisons Is A[5] < A[8]? Yes, 10 < 72 only relative ranking of elements important may assume, e.g., numbers 1, . . . , n Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 3 / 17
  • 23. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. 5 1 7 3 2 8 4 6 9 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 24. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. 5 1 7 3 2 8 4 6 915 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 25. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. 5 1 7 3 2 8 4 6 9 ? 1 min 5 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 26. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. 5 1 7 3 2 8 4 6 9 ? 71 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 27. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. 5 1 7 3 2 8 4 6 9 ? ? 31 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 28. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. 5 1 7 3 2 8 4 6 9 ? ? ? 21 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 29. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. 5 1 7 3 2 8 4 6 9 ? ? ? ? 81 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 30. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. 5 1 7 3 2 8 4 6 9 ? ? ? ? ? 41 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 31. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. 5 1 7 3 2 8 4 6 9 ? ? ? ? ? ? 61 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 32. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. 5 1 7 3 2 8 4 6 9 ? ? ? ? ? ? ? 91 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 33. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. 5 1 7 3 2 8 4 6 9 ? ? ? ? ? ? ? ? 1 min 5 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 34. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. 5 1 7 3 2 8 4 6 9 ? ? ? ? ? ? ? ? 5 7 3 2 8 4 6 95 min 1 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 35. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 5 7 3 2 8 4 6 91 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 36. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 5 7 3 2 8 4 6 91 to do (by same procedure) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 37. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 5 7 3 2 8 4 6 91 75 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 38. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 5 7 3 2 8 4 6 91 ? 35 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 39. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 5 7 3 2 8 4 6 91 ? ? 5 3 min Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 40. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 5 7 3 2 8 4 6 91 ? ? 23 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 41. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 5 7 3 2 8 4 6 91 ? ? ? 2 min 3 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 42. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 5 7 3 2 8 4 6 91 ? ? ? 82 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 43. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 5 7 3 2 8 4 6 91 ? ? ? ? 42 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 44. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 5 7 3 2 8 4 6 91 ? ? ? ? ? 62 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 45. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 5 7 3 2 8 4 6 91 ? ? ? ? ? ? 92 min ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 46. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 5 7 3 2 8 4 6 91 ? ? ? ? ? ? ? 2 min 5 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 47. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 7 3 5 8 4 6 952 min Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 48. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 7 3 5 8 4 6 92 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 49. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 3 7 5 8 4 6 9 ? ? ? ? ? ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 50. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? 3 4 5 8 7 6 9 ? ? ? ? ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 51. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? 3 4 5 8 7 6 9 ? ? ? ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 52. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 53. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 54. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Each round puts one item in place. Remaining list one smaller. Can we do better? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 55. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Each round puts one item in place. Remaining list one smaller. Can we do better? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 56. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Each round puts one item in place. Remaining list one smaller. Can we do better? Yes! Finding the minimum costs the same as computing the rank number of elements smaller than given element of any element. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 57. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 58. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final place of some item (pivot), put small items left, others right (partition). Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 59. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 60. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). 5 1 7 3 2 8 4 6 9 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 61. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). 5 1 7 3 2 8 4 6 9 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 62. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). 5 1 7 3 2 8 4 6 9 k g Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 63. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < 5 1 7 3 2 8 4 6 9 k g ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 64. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < 5 1 7 3 2 8 4 6 9 ? k g Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 65. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < 5 1 7 3 2 8 4 6 9 ? k g ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 66. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < > 5 1 7 3 2 8 4 6 9 ? k g ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 67. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < > > 5 1 7 3 2 8 4 6 9 ? k g ? ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 68. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < > >> 5 1 7 3 2 8 4 6 9 ? ? ? k g ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 69. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < > >>< 5 1 7 3 2 8 4 6 9 ? ? ?? k g ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 70. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < >>< > ? ? ?? k g ? 5 1 3 2 8 6 94 7 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 71. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < >>< >< ? ? ?? g ? 5 1 4 3 2 8 7 6 9 k g ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 72. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < >>< >< < ? ? ?? g ? 5 1 4 3 2 8 7 6 9 ? k g ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 73. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < >>< >< < > ? ? ??? 5 1 4 3 2 8 7 6 9 ? ? gk ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 74. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < >>< >< < > ? ? ??? 5 1 4 3 2 8 7 6 9 ? ? ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 75. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < >>< >< >< ? ? ???? ? ? 1 4 3 8 7 6 92 5 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 76. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < >>< >< >< ? ? ???? ? ? 2 1 4 3 8 7 6 95 reached final place! Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 77. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < >>< >< >< ? ? ???? ? ? 2 1 4 3 8 7 6 95 to do to do Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 78. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). ? ? ???? ? ? 2 1 4 3 8 7 6 95 to do Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 79. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). ? ? ???? ? ? 2 1 4 3 8 7 6 95 to do Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 80. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < > > ? ? ???? ? ? 2 1 4 3 8 7 6 95 to do ? ? ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 81. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < > > ? ? ???? ? ? to do ? ? ? 1 2 4 3 5 8 7 6 9 to do Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 82. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). ? ? ???? ? ? to do ? ? ? 1 2 4 3 5 8 7 6 9 to do Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 83. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). ? ? ???? ? ? to do ? ? ? 1 2 3 4 5 8 7 6 9 ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 84. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). ? ? ???? ? ? to do ? ? ? 1 2 3 4 5 8 7 6 9 ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 85. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < < > ? ? ???? ? ? ? ? ? 1 2 3 4 5 8 7 6 9 ? ? ? ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 86. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). < < > ? ? ???? ? ? ? ? ? ? ? ? ? 1 2 3 4 5 6 7 8 9 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 87. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). ? ? ???? ? ? ? ? ? ? ? ? ? 1 2 3 4 5 6 7 8 9 to do Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 88. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). ? ? ???? ? ? ? ? ? ? ? ? ? 1 2 3 4 5 6 7 8 9 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 89. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). ? ? ???? ? ? ? ? ? ? ? ? ? 1 2 3 4 5 6 7 8 9 ? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 90. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). ? ? ???? ? ? ? ? ? ? ? ? ? 1 2 3 4 5 6 7 8 9 ? 16 Comparisons Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 91. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). ? ? ???? ? ? ? ? ? ? ? ? ? 1 2 3 4 5 6 7 8 9 ? 16 Comparisons Much less comparisons in Quicksort ...unless pivots are max/min! But average/expected behavior is good. Quicksort is method of choice in practice. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 92. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). ? ? ???? ? ? ? ? ? ? ? ? ? 1 2 3 4 5 6 7 8 9 ? 16 Comparisons Much less comparisons in Quicksort ...unless pivots are max/min! But average/expected behavior is good. Quicksort is method of choice in practice. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 93. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). ? ? ???? ? ? ? ? ? ? ? ? ? 1 2 3 4 5 6 7 8 9 ? 16 Comparisons Much less comparisons in Quicksort ...unless pivots are max/min! But average/expected (actually: almost always good) behavior is good. Quicksort is method of choice in practice. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 94. What is Quicksort? How to make a computer sort? Selectionsort Find smallest item and put it in place. ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3 4 5 6 7 8 9 ? ? ? ? ? ? 36 Comparisons Quicksort Find final kth smallest A[k] place of some item (pivot), put small items left, others right (partition). ? ? ???? ? ? ? ? ? ? ? ? ? 1 2 3 4 5 6 7 8 9 ? 16 Comparisons Much less comparisons in Quicksort ...unless pivots are max/min! But average/expected (actually: almost always good) behavior is good. Quicksort is method of choice in practice. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 4 / 17
  • 95. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 96. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Many variants tried Two important tuning options: 1 Choose pivots wisely (pivot sampling) for example: middle element of three (median-of-three) pivot never min or max! 2 Split into s 2 subproblems at once (multiway partitioning) for example: 2 pivots 3 classes: small, medium and large subproblems are smaller, but partitioning is more expensive. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 97. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Many variants tried Two important tuning options: 1 Choose pivots wisely (pivot sampling) for example: middle element of three (median-of-three) pivot never min or max! 2 Split into s 2 subproblems at once (multiway partitioning) for example: 2 pivots 3 classes: small, medium and large subproblems are smaller, but partitioning is more expensive. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 98. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Many variants tried ... many not helpful Two important tuning options: 1 Choose pivots wisely (pivot sampling) for example: middle element of three (median-of-three) pivot never min or max! 2 Split into s 2 subproblems at once (multiway partitioning) for example: 2 pivots 3 classes: small, medium and large subproblems are smaller, but partitioning is more expensive. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 99. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Many variants tried ... many not helpful Two important tuning options: 1 Choose pivots wisely (pivot sampling) for example: middle element of three (median-of-three) pivot never min or max! 2 Split into s 2 subproblems at once (multiway partitioning) for example: 2 pivots 3 classes: small, medium and large subproblems are smaller, but partitioning is more expensive. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 100. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Many variants tried ... many not helpful Two important tuning options: 1 Choose pivots wisely (pivot sampling) for example: middle element of three (median-of-three) pivot never min or max! 2 Split into s 2 subproblems at once (multiway partitioning) for example: 2 pivots 3 classes: small, medium and large subproblems are smaller, but partitioning is more expensive. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 101. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Many variants tried ... many not helpful Two important tuning options: 1 Choose pivots wisely (pivot sampling) for example: middle element of three (median-of-three) pivot never min or max! 2 Split into s 2 subproblems at once (multiway partitioning) for example: 2 pivots 3 classes: small, medium and large subproblems are smaller, but partitioning is more expensive. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 102. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Many variants tried ... many not helpful Two important tuning options: 1 Choose pivots wisely (pivot sampling) for example: middle element of three (median-of-three) pivot never min or max! 2 Split into s 2 subproblems at once (multiway partitioning) for example: 2 pivots 3 classes: small, medium and large subproblems are smaller, but partitioning is more expensive. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 103. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Many variants tried ... many not helpful Two important tuning options: 1 Choose pivots wisely (pivot sampling) for example: middle element of three (median-of-three) pivot never min or max! 2 Split into s 2 subproblems at once (multiway partitioning) for example: 2 pivots 3 classes: small, medium and large subproblems are smaller, but partitioning is more expensive. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 104. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Many variants tried ... many not helpful Two important tuning options: 1 Choose pivots wisely (pivot sampling) for example: middle element of three (median-of-three) pivot never min or max! 2 Split into s 2 subproblems at once (multiway partitioning) for example: 2 pivots 3 classes: small, medium and large subproblems are smaller, but partitioning is more expensive. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 105. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Many variants tried ... many not helpful Two important tuning options: 1 Choose pivots wisely (pivot sampling) for example: middle element of three (median-of-three) pivot never min or max! 2 Split into s 2 subproblems at once (multiway partitioning) for example: 2 pivots 3 classes: small, medium and large subproblems are smaller, but partitioning is more expensive. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 106. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Many variants tried ... many not helpful Two important tuning options: 1 Choose pivots wisely (pivot sampling) for example: middle element of three (median-of-three) pivot never min or max! 2 Split into s 2 subproblems at once (multiway partitioning) for example: 2 pivots 3 classes: small, medium and large subproblems are smaller, but partitioning is more expensive. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 107. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Many variants tried ... many not helpful Two important tuning options: 1 Choose pivots wisely (pivot sampling) for example: middle element of three (median-of-three) pivot never min or max! 2 Split into s 2 subproblems at once (multiway partitioning) for example: 2 pivots 3 classes: small, medium and large subproblems are smaller, but partitioning is more expensive. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 108. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Many variants tried ... many not helpful Two important tuning options: 1 Choose pivots wisely (pivot sampling) for example: middle element of three (median-of-three) pivot never min or max! 2 Split into s 2 subproblems at once (multiway partitioning) for example: 2 pivots 3 classes: small, medium and large subproblems are smaller, but partitioning is more expensive. conventional wisdom Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 109. Variants of Quicksort It is tempting to try to develop ways to improve quicksort: a faster sorting algorithm is computer science’s “better mousetrap,” and quicksort is a venerable method that seems to invite tinkering. R. Sedgewick and K. Wayne, Algorithms 4th ed. Many variants tried ... many not helpful Two important tuning options: 1 Choose pivots wisely (pivot sampling) for example: middle element of three (median-of-three) pivot never min or max! 2 Split into s 2 subproblems at once (multiway partitioning) for example: 2 pivots 3 classes: small, medium and large subproblems are smaller, but partitioning is more expensive. conventional wisdom till 2009! Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 5 / 17
  • 110. Java 7’s Dual-Pivot Quicksort What happened in 2009? Java used e.g. for Android apps 7 sorting method was released! till 2009, Java used classic Quicksort Java 7 uses new dual-pivot Quicksort started as hobby project by Vladimir Yaroslavskiy 20 % faster than highly-tuned Java 6! Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
  • 111. Java 7’s Dual-Pivot Quicksort What happened in 2009? Java used e.g. for Android apps 7 sorting method was released! till 2009, Java used classic Quicksort Java 7 uses new dual-pivot Quicksort started as hobby project by Vladimir Yaroslavskiy 20 % faster than highly-tuned Java 6! Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
  • 112. Java 7’s Dual-Pivot Quicksort What happened in 2009? Java used e.g. for Android apps 7 sorting method was released! till 2009, Java used classic Quicksort Java 7 uses new dual-pivot Quicksort started as hobby project by Vladimir Yaroslavskiy 20 % faster than highly-tuned Java 6! Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
  • 113. Java 7’s Dual-Pivot Quicksort What happened in 2009? Java used e.g. for Android apps 7 sorting method was released! till 2009, Java used classic as in example before + median-of-three + Insertionsort Quicksort Java 7 uses new dual-pivot Quicksort started as hobby project by Vladimir Yaroslavskiy 20 % faster than highly-tuned Java 6! Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
  • 114. Java 7’s Dual-Pivot Quicksort What happened in 2009? Java used e.g. for Android apps 7 sorting method was released! till 2009, Java used classic as in example before + median-of-three + Insertionsort Quicksort Java 7 uses new dual-pivot Quicksort started as hobby project by Vladimir Yaroslavskiy 20 % faster than highly-tuned Java 6! 0 0.5 1 1.5 2 ·106 7 8 9 n time 10−6·nlnn Java 6 sorting method (121ms to sort 106 items) Normalized Java runtimes (in ms). Average and standard deviation of 1000 random permutations per size. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
  • 115. Java 7’s Dual-Pivot Quicksort What happened in 2009? Java used e.g. for Android apps 7 sorting method was released! till 2009, Java used classic as in example before + median-of-three + Insertionsort Quicksort Java 7 uses new dual-pivot Quicksort started as hobby project by Vladimir Yaroslavskiy 20 % faster than highly-tuned Java 6! 0 0.5 1 1.5 2 ·106 7 8 9 n time 10−6·nlnn Java 6 sorting method (121ms to sort 106 items) Normalized Java runtimes (in ms). Average and standard deviation of 1000 random permutations per size. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
  • 116. Java 7’s Dual-Pivot Quicksort What happened in 2009? Java used e.g. for Android apps 7 sorting method was released! till 2009, Java used classic as in example before + median-of-three + Insertionsort Quicksort Java 7 uses new dual-pivot Quicksort started as hobby project by Vladimir Yaroslavskiy 20 % faster than highly-tuned Java 6! 0 0.5 1 1.5 2 ·106 7 8 9 n time 10−6·nlnn Java 6 sorting method (121ms to sort 106 items) Normalized Java runtimes (in ms). Average and standard deviation of 1000 random permutations per size. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
  • 117. Java 7’s Dual-Pivot Quicksort What happened in 2009? Java used e.g. for Android apps 7 sorting method was released! till 2009, Java used classic as in example before + median-of-three + Insertionsort Quicksort Java 7 uses new dual-pivot Quicksort started as hobby project by Vladimir Yaroslavskiy 20 % faster than highly-tuned Java 6! 0 0.5 1 1.5 2 ·106 7 8 9 n time 10−6·nlnn Java 6 sorting method Java 7 sorting method (121ms to sort 106 items) (93ms to sort 106 items) Normalized Java runtimes (in ms). Average and standard deviation of 1000 random permutations per size. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
  • 118. Java 7’s Dual-Pivot Quicksort What happened in 2009? Java used e.g. for Android apps 7 sorting method was released! till 2009, Java used classic as in example before + median-of-three + Insertionsort Quicksort Java 7 uses new dual-pivot Quicksort started as hobby project by Vladimir Yaroslavskiy 20 % faster than highly-tuned Java 6! 0 0.5 1 1.5 2 ·106 7 8 9 n time 10−6·nlnn Java 6 sorting method Java 7 sorting method (121ms to sort 106 items) (93ms to sort 106 items) Normalized Java runtimes (in ms). Average and standard deviation of 1000 random permutations per size. No theoretical explanation for running time known in 2009! Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
  • 119. Java 7’s Dual-Pivot Quicksort What happened in 2009? Java used e.g. for Android apps 7 sorting method was released! till 2009, Java used classic as in example before + median-of-three + Insertionsort Quicksort Java 7 uses new dual-pivot Quicksort started as hobby project by Vladimir Yaroslavskiy 20 % faster than highly-tuned Java 6! 0 0.5 1 1.5 2 ·106 7 8 9 n time 10−6·nlnn Java 6 sorting method Java 7 sorting method (121ms to sort 106 items) (93ms to sort 106 items) Normalized Java runtimes (in ms). Average and standard deviation of 1000 random permutations per size. No theoretical explanation for running time known in 2009! Only lucky experiments? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
  • 120. Java 7’s Dual-Pivot Quicksort What happened in 2009? Java used e.g. for Android apps 7 sorting method was released! till 2009, Java used classic as in example before + median-of-three + Insertionsort Quicksort Java 7 uses new dual-pivot Quicksort started as hobby project by Vladimir Yaroslavskiy 20 % faster than highly-tuned Java 6! 0 0.5 1 1.5 2 ·106 7 8 9 n time 10−6·nlnn Java 6 sorting method Java 7 sorting method (121ms to sort 106 items) (93ms to sort 106 items) Normalized Java runtimes (in ms). Average and standard deviation of 1000 random permutations per size. No theoretical explanation for running time known in 2009! Only lucky experiments? Why did no-one come up with this earlier? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
  • 121. Java 7’s Dual-Pivot Quicksort What happened in 2009? Java used e.g. for Android apps 7 sorting method was released! till 2009, Java used classic as in example before + median-of-three + Insertionsort Quicksort Java 7 uses new dual-pivot Quicksort started as hobby project by Vladimir Yaroslavskiy 20 % faster than highly-tuned Java 6! 0 0.5 1 1.5 2 ·106 7 8 9 n time 10−6·nlnn Java 6 sorting method Java 7 sorting method (121ms to sort 106 items) (93ms to sort 106 items) Normalized Java runtimes (in ms). Average and standard deviation of 1000 random permutations per size. No theoretical explanation for running time known in 2009! Only lucky experiments? Why did no-one come up with this earlier? That was the starting point for my work! Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 6 / 17
  • 122. Overview of my work My Thesis Multiway partitioning has genuine potential to speed up Quicksort. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 7 / 17
  • 123. Overview of my work My Thesis Multiway partitioning has genuine potential to speed up Quicksort. Mathematical Analysis prove eternal truths not experiments Mathematical Analysis prove eternal truths not experiments Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 7 / 17
  • 124. Overview of my work My Thesis Multiway partitioning has genuine potential to speed up Quicksort. Mathematical Analysis prove eternal truths not experiments What is multiway partitioning? generalize existing Quicksort variants generic s-way one-pass partitioning with pivot sampling What is multiway partitioning? generalize existing Quicksort variants generic s-way one-pass partitioning with pivot sampling Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 7 / 17
  • 125. Overview of my work My Thesis Multiway partitioning has genuine potential to speed up Quicksort. Mathematical Analysis prove eternal truths not experiments What is multiway partitioning? generalize existing Quicksort variants generic s-way one-pass partitioning with pivot sampling Unified Analysis of Quicksort costs on average for large inputs parametric (algorithm and cost measure) Unified Analysis of Quicksort costs on average for large inputs parametric (algorithm and cost measure) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 7 / 17
  • 126. Overview of my work My Thesis Multiway partitioning has genuine potential to speed up Quicksort. Mathematical Analysis prove eternal truths not experiments What is multiway partitioning? generalize existing Quicksort variants generic s-way one-pass partitioning with pivot sampling Unified Analysis of Quicksort costs on average for large inputs parametric (algorithm and cost measure) Cost Measures generalize models of cost comparisons write accesses / swaps cache misses / scanned elements branch mispredictions element-wise charging schemes Cost Measures generalize models of cost comparisons write accesses / swaps cache misses / scanned elements branch mispredictions element-wise charging schemes Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 7 / 17
  • 127. Overview of my work My Thesis Multiway partitioning has genuine potential to speed up Quicksort. Mathematical Analysis prove eternal truths not experiments What is multiway partitioning? generalize existing Quicksort variants generic s-way one-pass partitioning with pivot sampling Unified Analysis of Quicksort costs on average for large inputs parametric (algorithm and cost measure) Cost Measures generalize models of cost comparisons write accesses / swaps cache misses / scanned elements branch mispredictions element-wise charging schemes Discussion of Results influence of number of pivots pivot sampling organization of indices Discussion of Results influence of number of pivots pivot sampling organization of indices Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 7 / 17
  • 128. Overview of my work My Thesis Multiway partitioning has genuine potential to speed up Quicksort. Mathematical Analysis prove eternal truths not experiments What is multiway partitioning? generalize existing Quicksort variants generic s-way one-pass partitioning with pivot sampling Unified Analysis of Quicksort costs on average for large inputs parametric (algorithm and cost measure) Cost Measures generalize models of cost comparisons write accesses / swaps cache misses / scanned elements branch mispredictions element-wise charging schemes Discussion of Results influence of number of pivots pivot sampling organization of indices Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 7 / 17
  • 129. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 130. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 131. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 132. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.) 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 133. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.) 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 134. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.) 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 135. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.) 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 136. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.) 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 137. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.) 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 138. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.) 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 139. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.) 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 140. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.) 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C P[C = ] = 3/12 = 0.25 P[C = ] = 3/12 = 0.25 P[C = ] = 3/12 = 0.25 P[C = ] = 3/12 = 0.25 by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 141. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.) 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C P[C = ] = 3/12 = 0.25 P[C = ] = 3/12 = 0.25 P[C = ] = 3/12 = 0.25 P[C = ] = 3/12 = 0.25 by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 142. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.) 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C P[C = ] = 3/12 = 0.25 P[C = ] = 3/12 = 0.25 P[C = ] = 3/12 = 0.25 P[C = ] = 3/12 = 0.25 by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. = 4 · 1 4 log2(4) = 2 We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 143. Entropy What is entropy? 1 Thermodynamics: unusable part of thermal energy (Physicists’ party? Next door, please.) 2 Mathematics: information content of a random variable Definition (Entropy) Let X be a random variable with P[X = i] = pi for i ∈ {1, . . . , u}. Its entropy is defined as H(X) = u i=1 pi log2(1/pi). probability that X = i ...all clear? Let’s see an application. 1 2 3 4 5 6 7 8 9 10 11 12 Urn with colored balls. Alice draws ball X uniformly at random from urn. Bob wants to guess its color C P[C = ] = 3/12 = 0.25 P[C = ] = 3/12 = 0.25 P[C = ] = 3/12 = 0.25 P[C = ] = 3/12 = 0.25 by Yes/No-Questions. Theorem (Shannon’s Source Coding Theorem) On average, Bob can’t do with less than H(C) questions. = 4 · 1 4 log2(4) = 2 We say: We must acquire H(C) bits of information to know C. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 8 / 17
  • 144. Information Theory & Sorting Where is the connection to sorting? 1 2 3 4 5 6 7 8 9 10 11 12 Now, Alice draws one of the n! n(n − 1) · · · 2 · 1 possible orderings of n items. Bob guesses the order by asking comparisons. Theorem (Information-Theoretic Lower Bound for Sorting) We cannot sort with less than log2(n!) = n log2(n) ± O(n) comparisons. Assumptions: (1) All orderings equally likely. (2) Only comparisons allowed.asymptotic error term for n → ∞ H(C) To achieve this bound, every comparison must yield 1 bit of information! Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 9 / 17
  • 145. Information Theory & Sorting Where is the connection to sorting? 1 2 3 4 5 6 7 8 9 10 11 12 Now, Alice draws one of the n! n(n − 1) · · · 2 · 1 possible orderings of n items. Bob guesses the order by asking comparisons. Theorem (Information-Theoretic Lower Bound for Sorting) We cannot sort with less than log2(n!) = n log2(n) ± O(n) comparisons. Assumptions: (1) All orderings equally likely. (2) Only comparisons allowed.asymptotic error term for n → ∞ H(C) To achieve this bound, every comparison must yield 1 bit of information! Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 9 / 17
  • 146. Information Theory & Sorting Where is the connection to sorting? 1 2 3 4 5 6 7 8 9 10 11 12 Now, Alice draws one of the n! n(n − 1) · · · 2 · 1 possible orderings = colors of n items. Bob guesses the order by asking comparisons. Theorem (Information-Theoretic Lower Bound for Sorting) We cannot sort with less than log2(n!) = n log2(n) ± O(n) comparisons. Assumptions: (1) All orderings equally likely. (2) Only comparisons allowed.asymptotic error term for n → ∞ H(C) To achieve this bound, every comparison must yield 1 bit of information! Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 9 / 17
  • 147. Information Theory & Sorting Where is the connection to sorting? 1 2 3 4 5 6 7 8 9 10 11 12 Now, Alice draws one of the n! n(n − 1) · · · 2 · 1 possible orderings = colors of n items. Bob guesses the order by asking comparisons. Theorem (Information-Theoretic Lower Bound for Sorting) We cannot sort with less than log2(n!) = n log2(n) ± O(n) comparisons. Assumptions: (1) All orderings equally likely. (2) Only comparisons allowed.asymptotic error term for n → ∞ H(C) To achieve this bound, every comparison must yield 1 bit of information! Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 9 / 17
  • 148. Information Theory & Sorting Where is the connection to sorting? 1 2 3 4 5 6 7 8 9 10 11 12 Now, Alice draws one of the n! n(n − 1) · · · 2 · 1 possible orderings = colors of n items. Bob guesses the order by asking comparisons. Theorem (Information-Theoretic Lower Bound for Sorting) We cannot sort with less than log2(n!) = n log2(n) ± O(n) comparisons. Assumptions: (1) All orderings equally likely. (2) Only comparisons allowed.asymptotic error term for n → ∞ H(C) To achieve this bound, every comparison must yield 1 bit of information! Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 9 / 17
  • 149. Information Theory & Sorting Where is the connection to sorting? 1 2 3 4 5 6 7 8 9 10 11 12 Now, Alice draws one of the n! n(n − 1) · · · 2 · 1 possible orderings = colors of n items. Bob guesses the order by asking comparisons. Theorem (Information-Theoretic Lower Bound for Sorting) We cannot sort with less than log2(n!) = n log2(n) ± O(n) comparisons. Assumptions: (1) All orderings equally likely. (2) Only comparisons allowed.asymptotic error term for n → ∞ H(C) To achieve this bound, every comparison must yield 1 bit of information! Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 9 / 17
  • 150. Information Theory & Sorting Where is the connection to sorting? 1 2 3 4 5 6 7 8 9 10 11 12 Now, Alice draws one of the n! n(n − 1) · · · 2 · 1 possible orderings = colors of n items. Bob guesses the order by asking comparisons. Theorem (Information-Theoretic Lower Bound for Sorting) We cannot sort with less than log2(n!) = n log2(n) ± O(n) comparisons. Assumptions: (1) All orderings equally likely. (2) Only comparisons allowed.asymptotic error term for n → ∞ H(C) To achieve this bound, every comparison must yield 1 bit of information! We can reverse this idea to analyze Quicksort. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 9 / 17
  • 151. Comparisons in Quicksort How many comparisons does Quicksort use on average? Entropy-based analysis: 1 Compute the average information yield: x bit comparison . (0 < x 1) What is x? ...stay tuned. 2 Need to learn log2(n!) bits Use log2(n!) x = 1 x n log2(n) ± O(n) comparisons. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 10 / 17
  • 152. Comparisons in Quicksort How many comparisons does Quicksort use on average? Entropy-based analysis: 1 Compute the average information yield: x bit comparison . (0 < x 1) What is x? ...stay tuned. 2 Need to learn log2(n!) bits Use log2(n!) x = 1 x n log2(n) ± O(n) comparisons. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 10 / 17
  • 153. Comparisons in Quicksort How many comparisons does Quicksort use on average? Entropy-based analysis: 1 Compute the average information yield: x bit comparison . (0 < x 1) What is x? ...stay tuned. 2 Need to learn log2(n!) bits Use log2(n!) x = 1 x n log2(n) ± O(n) comparisons. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 10 / 17
  • 154. Comparisons in Quicksort How many comparisons does Quicksort use on average? Entropy-based analysis: 1 Compute the average information yield: x bit comparison . (0 < x 1) What is x? ...stay tuned. 2 Need to learn log2(n!) bits Use log2(n!) x = 1 x n log2(n) ± O(n) comparisons. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 10 / 17
  • 155. Comparisons in Quicksort How many comparisons does Quicksort use on average? Entropy-based analysis: 1 Compute the average information yield: x bit comparison . (0 < x 1) What is x? ...stay tuned. 2 Need to learn log2(n!) bits Use log2(n!) x = 1 x n log2(n) ± O(n) comparisons. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 10 / 17
  • 156. Comparisons in Quicksort How many comparisons does Quicksort use on average? Entropy-based analysis: 1 Compute the average information yield: x bit comparison . (0 < x 1) What is x? ...stay tuned. 2 Need to learn log2(n!) bits Use log2(n!) x = 1 x n log2(n) ± O(n) comparisons. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 10 / 17
  • 157. Comparisons in Quicksort How many comparisons does Quicksort use on average? Entropy-based analysis: 1 Compute the average information yield: x bit comparison . (0 < x 1) What is x? ...stay tuned. 2 Need to learn log2(n!) bits not mathematically rigorous ... but correct result! rigorous proof → dissertation Use log2(n!) x = 1 x n log2(n) ± O(n) comparisons. Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 10 / 17
  • 158. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 159. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 160. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 161. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 162. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] prob. of item to be < P log2(P[ < ]) − P[ > ] log2(P[ > ]) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 163. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] prob. of item to be < P log2(P[ < ]) − P[ > ] log2(P[ > ]) Note: pivot value P is random. What is its distribution? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 164. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] prob. of item to be < P log2(P[ < ]) − P[ > ] log2(P[ > ]) Note: pivot value P is random. What is its distribution? Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 165. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] prob. of item to be < P log2(P[ < ]) − P[ > ] log2(P[ > ]) Note: pivot value P is random. What is its distribution? Excursion: Input Models Typical: Random Permutations items: 1, . . . , n all orderings equally likely We use the equivalent Uniform Model n numbers drawn i.i.d. Uniform(0, 1) i.i.d. random relative ranking P[ < ] = P, P[ > ] = 1 − P Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 166. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] prob. of item to be < P log2(P[ < ]) − P[ > ] log2(P[ > ]) Note: pivot value P is random. What is its distribution? Excursion: Input Models Typical: Random Permutations items: 1, . . . , n all orderings equally likely We use the equivalent Uniform Model n numbers drawn i.i.d. Uniform(0, 1) i.i.d. random relative ranking P[ < ] = P, P[ > ] = 1 − P Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 167. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] prob. of item to be < P log2(P[ < ]) − P[ > ] log2(P[ > ]) Note: pivot value P is random. What is its distribution? Excursion: Input Models Typical: Random Permutations items: 1, . . . , n all orderings equally likely We use the equivalent Uniform Model n numbers drawn i.i.d. Uniform(0, 1) i.i.d. random relative ranking P[ < ] = P, P[ > ] = 1 − P Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 168. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] prob. of item to be < P log2(P[ < ]) − P[ > ] log2(P[ > ]) Note: pivot value P is random. What is its distribution? Excursion: Input Models Typical: Random Permutations items: 1, . . . , n all orderings equally likely We use the equivalent Uniform Model n numbers drawn i.i.d. Uniform(0, 1) i.i.d. random relative ranking P[ < ] = P, P[ > ] = 1 − P Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 169. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] prob. of item to be < P log2(P[ < ]) − P[ > ] log2(P[ > ]) Note: pivot value P is random. What is its distribution? Excursion: Input Models Typical: Random Permutations items: 1, . . . , n all orderings equally likely We use the equivalent Uniform Model n numbers drawn i.i.d. Uniform(0, 1) i.i.d. random relative ranking P[ < ] = P, P[ > ] = 1 − P Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 170. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] prob. of item to be < P log2(P[ < ]) − P[ > ] log2(P[ > ]) Note: pivot value P is random. What is its distribution? Excursion: Input Models Typical: Random Permutations items: 1, . . . , n all orderings equally likely We use the equivalent Uniform Model n numbers drawn i.i.d. Uniform(0, 1) i.i.d. random relative ranking P[ < ] = P, P[ > ] = 1 − P same average sorting costs Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 171. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] prob. of item to be < P log2(P[ < ]) − P[ > ] log2(P[ > ]) Note: pivot value P is random. What is its distribution? Excursion: Input Models Typical: Random Permutations items: 1, . . . , n all orderings equally likely We use the equivalent Uniform Model n numbers drawn i.i.d. Uniform(0, 1) i.i.d. random relative ranking P[ < ] = P, P[ > ] = 1 − P same average sorting costs Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 172. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] prob. of item to be < P log2(P[ < ]) − P[ > ] log2(P[ > ]) Note: pivot value P is random. What is its distribution? Excursion: Input Models Typical: Random Permutations items: 1, . . . , n all orderings equally likely We use the equivalent Uniform Model n numbers drawn i.i.d. Uniform(0, 1) i.i.d. random relative ranking P[ < ] = P, P[ > ] = 1 − P same average sorting costs independent & identically distributed Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 173. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] prob. of item to be < P log2(P[ < ]) − P[ > ] log2(P[ > ]) Note: pivot value P is random. What is its distribution? Excursion: Input Models Typical: Random Permutations items: 1, . . . , n all orderings equally likely We use the equivalent Uniform Model n numbers drawn i.i.d. Uniform(0, 1) i.i.d. random relative ranking P[ < ] = P, P[ > ] = 1 − P same average sorting costs independent & identically distributed Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 174. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] prob. of item to be < P log2(P[ < ]) − P[ > ] log2(P[ > ]) Note: pivot value P is random. What is its distribution? Excursion: Input Models Typical: Random Permutations items: 1, . . . , n all orderings equally likely We use the equivalent Uniform Model n numbers drawn i.i.d. Uniform(0, 1) i.i.d. random relative ranking P[ < ] = P, P[ > ] = 1 − P 0 1P0 1 P[ < ] P[ > ] same average sorting costs independent & identically distributed Answer: P D = Uniform(0, 1) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 175. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) Excursion: Input Models Typical: Random Permutations items: 1, . . . , n all orderings equally likely We use the equivalent Uniform Model n numbers drawn i.i.d. Uniform(0, 1) i.i.d. random relative ranking P[ < ] = P, P[ > ] = 1 − P 0 1P0 1 P[ < ] P[ > ] same average sorting costs independent & identically distributed E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 176. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) Excursion: Input Models Typical: Random Permutations items: 1, . . . , n all orderings equally likely We use the equivalent Uniform Model n numbers drawn i.i.d. Uniform(0, 1) i.i.d. random relative ranking P[ < ] = P, P[ > ] = 1 − P 0 1P0 1 P[ < ] P[ > ] same average sorting costs independent & identically distributed E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 177. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) Excursion: Input Models Typical: Random Permutations items: 1, . . . , n all orderings equally likely We use the equivalent Uniform Model n numbers drawn i.i.d. Uniform(0, 1) i.i.d. random relative ranking P[ < ] = P, P[ > ] = 1 − P 0 1P0 1 P[ < ] P[ > ] same average sorting costs independent & identically distributed E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 178. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) Excursion: Input Models Typical: Random Permutations items: 1, . . . , n all orderings equally likely We use the equivalent Uniform Model n numbers drawn i.i.d. Uniform(0, 1) i.i.d. random relative ranking P[ < ] = P, P[ > ] = 1 − P 0 1P0 1 P[ < ] P[ > ] same average sorting costs independent & identically distributed E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 179. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 180. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 s-way Quicksort with pivot sampling: s − 1 pivots: P1, . . . , Ps−1 s classes c1, . . . , cs Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns 0 Example: s = 3, t = (1, 2, 3) choose pivots from k = 8 sample items 0 10 1 D D = Dirichlet(t1 + 1, . . . , ts + 1) E[H(C)] = s r=1 tr + 1 k + 1 Hk+1 − H 1 1 + 1 2 + 1 3 + · · · + 1 tr+1 tr+1 · log2(e) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 181. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 s-way Quicksort with pivot sampling: s − 1 pivots: P1, . . . , Ps−1 s classes c1, . . . , cs Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns 0 Example: s = 3, t = (1, 2, 3) choose pivots from k = 8 sample items 0 10 1 D D = Dirichlet(t1 + 1, . . . , ts + 1) E[H(C)] = s r=1 tr + 1 k + 1 Hk+1 − H 1 1 + 1 2 + 1 3 + · · · + 1 tr+1 tr+1 · log2(e) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 182. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 s-way Quicksort with pivot sampling: s − 1 pivots: P1, . . . , Ps−1 s classes c1, . . . , cs Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns 0 Example: s = 3, t = (1, 2, 3) choose pivots from k = 8 sample items 0 10 1 D D = Dirichlet(t1 + 1, . . . , ts + 1) E[H(C)] = s r=1 tr + 1 k + 1 Hk+1 − H 1 1 + 1 2 + 1 3 + · · · + 1 tr+1 tr+1 · log2(e) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 183. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 s-way Quicksort with pivot sampling: s − 1 pivots: P1, . . . , Ps−1 s classes c1, . . . , cs Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns 0 Example: s = 3, t = (1, 2, 3) choose pivots from k = 8 sample items 0 10 1 D D = Dirichlet(t1 + 1, . . . , ts + 1) E[H(C)] = s r=1 tr + 1 k + 1 Hk+1 − H 1 1 + 1 2 + 1 3 + · · · + 1 tr+1 tr+1 · log2(e) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 184. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 s-way Quicksort with pivot sampling: s − 1 pivots: P1, . . . , Ps−1 s classes c1, . . . , cs Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns 0 Example: s = 3, t = (1, 2, 3) choose pivots from k = 8 sample items 0 10 1 D D = Dirichlet(t1 + 1, . . . , ts + 1) E[H(C)] = s r=1 tr + 1 k + 1 Hk+1 − H 1 1 + 1 2 + 1 3 + · · · + 1 tr+1 tr+1 · log2(e) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 185. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 s-way Quicksort with pivot sampling: s − 1 pivots: P1, . . . , Ps−1 s classes c1, . . . , cs Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns 0 Example: s = 3, t = (1, 2, 3) choose pivots from k = 8 sample items 0 10 1 D D = Dirichlet(t1 + 1, . . . , ts + 1) E[H(C)] = s r=1 tr + 1 k + 1 Hk+1 − H 1 1 + 1 2 + 1 3 + · · · + 1 tr+1 tr+1 · log2(e) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 186. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 s-way Quicksort with pivot sampling: s − 1 pivots: P1, . . . , Ps−1 s classes c1, . . . , cs Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns 0 Example: s = 3, t = (1, 2, 3) choose pivots from k = 8 sample items 0 10 1 D D = Dirichlet(t1 + 1, . . . , ts + 1) E[H(C)] = s r=1 tr + 1 k + 1 Hk+1 − H 1 1 + 1 2 + 1 3 + · · · + 1 tr+1 tr+1 · log2(e) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 187. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 s-way Quicksort with pivot sampling: s − 1 pivots: P1, . . . , Ps−1 s classes c1, . . . , cs Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns 0 Example: s = 3, t = (1, 2, 3) choose pivots from k = 8 sample items 0 1 U1 0 1 D D = Dirichlet(t1 + 1, . . . , ts + 1) E[H(C)] = s r=1 tr + 1 k + 1 Hk+1 − H 1 1 + 1 2 + 1 3 + · · · + 1 tr+1 tr+1 · log2(e) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 188. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 s-way Quicksort with pivot sampling: s − 1 pivots: P1, . . . , Ps−1 s classes c1, . . . , cs Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns 0 Example: s = 3, t = (1, 2, 3) choose pivots from k = 8 sample items 0 1 U1 U2 0 1 D D = Dirichlet(t1 + 1, . . . , ts + 1) E[H(C)] = s r=1 tr + 1 k + 1 Hk+1 − H 1 1 + 1 2 + 1 3 + · · · + 1 tr+1 tr+1 · log2(e) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 189. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 s-way Quicksort with pivot sampling: s − 1 pivots: P1, . . . , Ps−1 s classes c1, . . . , cs Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns 0 Example: s = 3, t = (1, 2, 3) choose pivots from k = 8 sample items 0 1 U1 U2U3 0 1 D D = Dirichlet(t1 + 1, . . . , ts + 1) E[H(C)] = s r=1 tr + 1 k + 1 Hk+1 − H 1 1 + 1 2 + 1 3 + · · · + 1 tr+1 tr+1 · log2(e) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 190. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 s-way Quicksort with pivot sampling: s − 1 pivots: P1, . . . , Ps−1 s classes c1, . . . , cs Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns 0 Example: s = 3, t = (1, 2, 3) choose pivots from k = 8 sample items 0 1 U1 U2U3 U4 0 1 D D = Dirichlet(t1 + 1, . . . , ts + 1) E[H(C)] = s r=1 tr + 1 k + 1 Hk+1 − H 1 1 + 1 2 + 1 3 + · · · + 1 tr+1 tr+1 · log2(e) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 191. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 s-way Quicksort with pivot sampling: s − 1 pivots: P1, . . . , Ps−1 s classes c1, . . . , cs Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns 0 Example: s = 3, t = (1, 2, 3) choose pivots from k = 8 sample items 0 1 U1 U2U3 U4U5 0 1 D D = Dirichlet(t1 + 1, . . . , ts + 1) E[H(C)] = s r=1 tr + 1 k + 1 Hk+1 − H 1 1 + 1 2 + 1 3 + · · · + 1 tr+1 tr+1 · log2(e) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 192. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 s-way Quicksort with pivot sampling: s − 1 pivots: P1, . . . , Ps−1 s classes c1, . . . , cs Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns 0 Example: s = 3, t = (1, 2, 3) choose pivots from k = 8 sample items 0 1 U1 U2U3 U4U5 U6 0 1 D D = Dirichlet(t1 + 1, . . . , ts + 1) E[H(C)] = s r=1 tr + 1 k + 1 Hk+1 − H 1 1 + 1 2 + 1 3 + · · · + 1 tr+1 tr+1 · log2(e) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17
  • 193. Partitioning Entropy What is x? Classic Quicksort: Always compare with the pivot P < < < < > > > > 2 1 4 3 5 8 7 6 9 Outcome C is either small or large . Information yield is H(C) = −P[ < ] log2(P[ < ]) − P[ > ] log2(P[ > ]) E Average over P [H(C)] = E −P log2(P) − (1 − P) log2(1 − P) = −2 1 0 z log2(z) dz = 1 2 log2(e) ≈ 0.721348 s-way Quicksort with pivot sampling: s − 1 pivots: P1, . . . , Ps−1 s classes c1, . . . , cs Pivot Sampling: parameter t = (t1, . . . , ts) ∈ Ns 0 Example: s = 3, t = (1, 2, 3) choose pivots from k = 8 sample items 0 1 U1 U2U3 U4U5 U6 U7 0 1 D D = Dirichlet(t1 + 1, . . . , ts + 1) E[H(C)] = s r=1 tr + 1 k + 1 Hk+1 − H 1 1 + 1 2 + 1 3 + · · · + 1 tr+1 tr+1 · log2(e) Sebastian Wild Dual-Pivot Quicksort and Beyond 2016-07-08 11 / 17