Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2014 2015
Quicksort
Philip Dutr
Dept. of Computer Science, K.U.Leuven
Overview Lecture
Quicksort
Quicksort partitioning
Variant 1
Variant 2
Variant 3
Running Times
Performance Analysis
Worst
Best
Average
Optimizations
Summary
In-place sorting
In-place sorting
http://www.youtube.com/watch?v=k4RRi_ntQc8&feature=related
3
Counting sort
Radix sort
Bucket sort
See next lecture!
~1.39.n.log2n on average
Mergesort:
Quicksort:
Quicksort
Partitioning of elements:
Quicksort
public class Quick
{ // Quicksort.
public static void sort(Comparable[] a) {
StdRandom.shuffle(a);
sort(a, 0, a.length - 1);
}
private static void sort(Comparable[] a, int lo, int hi) {
if (hi <= lo) return;
int j = partition(a, lo, hi); // Partition
sort(a, lo, j-1); // Sort left part a[lo .. j-1].
sort(a, j+1, hi); // Sort right part a[j+1 .. hi].
}
}
Quicksort
Quicksort
Quicksort: 1960
Quicksort
http://www.youtube.com/watch?v=2HjspVV0jK4
10
13
14
15
16
Running times
Performance of quicksort
Worst case
19
Worst case
20
Performance of quicksort
Best Case
Split is balanced
T(n) = 2T(n/2) + partitioning(n)
= ~n . log2 n
21
T(n) = ~c . n . log2 n
Copyright Ph.Dutr, Spring 2015
Best case
22
23
Performance of quicksort:
Intuition for the average case
24
25
Optimizations
Practice: ~ 10 elements
Better probability of splitting in half
26
Optimizations
27
Summary of performance
Worst case
Average case
Random shuffle
28