CSE 326: Data
Structures
Sorting by Comparison
|
|
|
Zasha Weinberg in lieu of Steve Wolfman |
|
Winter Quarter 2000 |
Sorting by Comparison
algorithms
|
|
|
|
Simple: Selection Sort |
|
(some say Insertion Sort, or Bubble
Sort) |
|
Quick: QuickSort |
|
Good worst case: MergeSort, HeapSort |
|
|
|
Can we do better? |
Selection Sort idea
|
|
|
Find the smallest element, put it first |
|
Find the next smallest element, put it
second |
|
Find the next smallest, put it next |
|
etc. |
Selection Sort
HeapSort: sorting with a
priority queue ADT (heap)
QuickSort
QuickSort Partition
QuickSort Partition
(cont’d)
QuickSort
Worst case
Dealing with Slow
QuickSorts
|
|
|
|
Randomly permute input |
|
Bad cases more common than simple
probability would suggest. So, make
it truly random. |
|
Pick pivot cleverly |
|
“Median-of-3” rule takes Median(first,
middle, last element elements). |
|
Use MergeSort or HeapSort. |
QuickSort
Average Case
|
|
|
Model expected # of operations |
|
Manipulate the recurrences |
|
Get O(n log n) |
|
(Weiss, p. 275-279) |
MergeSort
MergeSort Running Time
Could we do better?*
|
|
|
|
For any possible correct Sorting by
Comparison alg |
|
What is lowest best case time? |
|
What is lowest worst case time? |
Best case time
Worst case time
|
|
|
How many comparisons does it take
before we can be sure of the order? |
|
This is the minimum # of comparisons
that any algorithm could do. |
Decision tree to sort
list A,B,C
Max depth of the decision
tree
|
|
|
How many leaves does the tree have? |
|
What’s the shallowest tree with a given
number of leaves? |
Stirling’s approximation
Eine kleine Nachmath