40 likes | 299 Views
Quick Sort. High level version Partition AlmostQuickSort. QuickSort. QuickSort(l,r) If (r-l) < 1 Return i Partition(l,r) QuickSort(l,i-1) QuickSort(i+1,r) Partition(l,r). r. l. i. Partition. How can you Partition, so that: Partition is O(n)
E N D
Quick Sort High level version Partition AlmostQuickSort CS 303 – Quick Sort Lecture 16
QuickSort • QuickSort(l,r) • If (r-l) < 1 Return • i Partition(l,r) • QuickSort(l,i-1) • QuickSort(i+1,r) • Partition(l,r) r l i CS 303 – Quick Sort Lecture 16
Partition • How can you Partition, so that: • Partition is O(n) • Why? • If both these conditions are met, then QuickSort is O(n log n) • If not...not! • Discuss various Partition techniques • scan from l,r inwards – swap when stuck • scan from l r – swap when <x • Discuss choice of pivot • use statistical sample to improve odds CS 303 – Quick Sort Lecture 16
AlmostQuickSort • AlmostQuickSort(l,r) • If (r-l) < 15 Return • i Partition(l,r) • AlmostQuickSort(l,i-1) • AlmostQuickSort(i+1,r) • QuickSort(l,r) • AlmostQuickSort(l,r) • InsertionSort(l,r) • Partition becomes easier to code • Final InsertionSort is O(n) • alas...(Almost)QuickSort is still O(n2) (in theory...but...) CS 303 – Quick Sort Lecture 16