CS107: Computing for Math CS107: Computing for Math and Science and Science Lecture 15: Real Numbers Lecture 15 CS107, Prof. Steinberg, f10 1
Sorting Sorting • There are many ways to sort data – Insertion Sort – Selection Sort – Quick Sort – Merge Sort – (Many others) Lecture 15 CS107, Prof. Steinberg, f10 2
Insertion Sort Insertion Sort • One by one add numbers to the sorted vector – Moving numbers already there to make room 20 10 30 5 Unsorted: Sorted: Lecture 15 CS107, Prof. Steinberg, f10 3
Insertion Sort Insertion Sort • One by one add numbers to the sorted vector – Moving numbers already there to make room 20 10 30 5 Unsorted: 20 Sorted: Lecture 15 CS107, Prof. Steinberg, f10 4
Insertion Sort Insertion Sort • One by one add numbers to the sorted vector – Moving numbers already there to make room 20 10 30 5 Unsorted: 20 Sorted: Lecture 15 CS107, Prof. Steinberg, f10 5
Insertion Sort Insertion Sort • One by one add numbers to the sorted vector – Moving numbers already there to make room 20 10 30 5 Unsorted: 10 20 Sorted: Lecture 15 CS107, Prof. Steinberg, f10 6
Insertion Sort Insertion Sort • One by one add numbers to the sorted vector – Moving numbers already there to make room 20 10 30 5 Unsorted: 10 20 30 Sorted: Lecture 15 CS107, Prof. Steinberg, f10 7
Insertion Sort Insertion Sort • One by one add numbers to the sorted vector – Moving numbers already there to make room 20 10 30 5 Unsorted: 10 20 30 Sorted: Lecture 15 CS107, Prof. Steinberg, f10 8
Insertion Sort Insertion Sort • One by one add numbers to the sorted vector – Moving numbers already there to make room 20 10 30 5 Unsorted: 10 20 30 Sorted: Lecture 15 CS107, Prof. Steinberg, f10 9
Insertion Sort Insertion Sort • One by one add numbers to the sorted vector – Moving numbers already there to make room 20 10 30 5 Unsorted: 10 20 30 Sorted: Lecture 15 CS107, Prof. Steinberg, f10 10
Insertion Sort Insertion Sort • One by one add numbers to the sorted vector – Moving numbers already there to make room 20 10 30 5 Unsorted: 5 10 20 30 Sorted: Lecture 15 CS107, Prof. Steinberg, f10 11
In Place Insertion Sort In Place Insertion Sort • We don’t really need two vectors, unsorted and sorted - we can keep all the data in one vector Lecture 15 CS107, Prof. Steinberg, f10 12
In Place Insertion Sort In Place Insertion Sort 20 10 30 5 Sorted | unsorted Lecture 15 CS107, Prof. Steinberg, f10 13
In Place Insertion Sort In Place Insertion Sort 10 20 10 30 5 Sorted | unsorted Lecture 15 CS107, Prof. Steinberg, f10 14
In Place Insertion Sort In Place Insertion Sort 10 20 20 30 5 Sorted | unsorted Lecture 15 CS107, Prof. Steinberg, f10 15
In Place Insertion Sort In Place Insertion Sort 10 10 20 30 5 Sorted | unsorted Lecture 15 CS107, Prof. Steinberg, f10 16
In Place Insertion Sort In Place Insertion Sort 10 20 30 5 Sorted | unsorted Lecture 15 CS107, Prof. Steinberg, f10 17
In Place Insertion Sort In Place Insertion Sort 10 20 30 5 Sorted | unsorted Lecture 15 CS107, Prof. Steinberg, f10 18
In Place Insertion Sort In Place Insertion Sort 10 20 30 5 Sorted | unsorted Lecture 15 CS107, Prof. Steinberg, f10 19
In Place Insertion Sort In Place Insertion Sort 5 10 20 30 5 Sorted | unsorted Lecture 15 CS107, Prof. Steinberg, f10 20
In Place Insertion Sort In Place Insertion Sort 5 10 20 30 30 Sorted | unsorted Lecture 15 CS107, Prof. Steinberg, f10 21
In Place Insertion Sort In Place Insertion Sort 5 10 20 20 30 Sorted | unsorted Lecture 15 CS107, Prof. Steinberg, f10 22
In Place Insertion Sort In Place Insertion Sort 5 10 10 20 30 Sorted | unsorted Lecture 15 CS107, Prof. Steinberg, f10 23
In Place Insertion Sort In Place Insertion Sort 5 5 10 20 30 Sorted | unsorted Lecture 15 CS107, Prof. Steinberg, f10 24
How Much Work is it? How Much Work is it? • Approximately length squared Lecture 15 CS107, Prof. Steinberg, f10 25
How Much Work is it? How Much Work is it? • Length 2 is worst case • We might find the right place early • If vector already close to sorted, takes much less than length 2 • Note the cost of moving things in addition to comparing Lecture 15 CS107, Prof. Steinberg, f10 26
Selection Sort Selection Sort • Repeatedly – Find smallest in unsorted – Move it to end of sorted Unsorted: 20 10 5 30 Sorted: Lecture 15 CS107, Prof. Steinberg, f10 27
Selection Sort Selection Sort • Repeatedly – Find smallest in unsorted – Move it to end of sorted Unsorted: 10 20 5 30 Sorted: Lecture 15 CS107, Prof. Steinberg, f10 28
Selection Sort Selection Sort • Repeatedly – Find smallest in unsorted – Move it to end of sorted Unsorted: 10 20 5 7 Sorted Lecture 15 CS107, Prof. Steinberg, f10 29
Selection Sort Selection Sort • Repeatedly – Find smallest in unsorted – Move it to end of sorted Unsorted: 10 20 5 7 Sorted: 5 How can we delete it from unsorted? Lecture 15 CS107, Prof. Steinberg, f10 30
Selection Sort Selection Sort • Repeatedly – Find smallest in unsorted – Move it to end of sorted Unsorted: 10 20 7 7 Sorted: 5 ignore How can we delete it from unsorted? ` Lecture 15 CS107, Prof. Steinberg, f10 31
Selection Sort Selection Sort • Repeatedly – Find smallest in unsorted – Move it to end of sorted Unsorted: 10 20 7 7 Sorted: 5 ignore Lecture 15 CS107, Prof. Steinberg, f10 32
Selection Sort Selection Sort • Repeatedly – Find smallest in unsorted – Move it to end of sorted Unsorted: 10 20 7 7 Sorted: 5 7 ignore Lecture 15 CS107, Prof. Steinberg, f10 33
Selection Sort Selection Sort • Repeatedly – Find smallest in unsorted – Move it to end of sorted ignore Unsorted: 10 20 7 7 Sorted: 5 7 Lecture 15 CS107, Prof. Steinberg, f10 34
Selection Sort Selection Sort • Repeatedly – Find smallest in unsorted – Move it to end of sorted ignore Unsorted: 20 20 7 7 Sorted: 5 7 10 Lecture 15 CS107, Prof. Steinberg, f10 35
Selection Sort Selection Sort • Repeatedly – Find smallest in unsorted – Move it to end of sorted ignore Unsorted: 20 20 7 7 Sorted: 5 7 10 Lecture 15 CS107, Prof. Steinberg, f10 36
Selection Sort Selection Sort • Repeatedly – Find smallest in unsorted – Move it to end of sorted ignore Unsorted: 20 20 7 7 Sorted: 5 7 10 20 See selectSort.m Lecture 15 CS107, Prof. Steinberg, f10 37
In Place Selection Sort In Place Selection Sort • Key idea: swap smallest unsorted and first unsorted - see inplaceSelectSort.m and minPlace.m |20 10 5 8 5|10 20 8 5 8| 20 10 5 8 10| 20 Lecture 15 CS107, Prof. Steinberg, f10 38
How Much Work is it? How Much Work is it? • Length 2 • Same for all data Lecture 15 CS107, Prof. Steinberg, f10 39
Selection vs vs Insertion Insertion Selection Selection sort: Insertion sort • Simpler to write • Harder to write • Same worst case: • Same worst case: O(n 2 ) O(n 2 ) • Cannot make use of • Can make use of partial pre-sorting: partially sorted list: worse average case better average case Lecture 15 CS107, Prof. Steinberg, f10 40
Quick Sort Quick Sort • Divide and conquer – Divide numbers into two groups – Sort each group separately – Combine sorted groups • Quick sort: – Choose one number, call it pivot – Groups are numbers > pivot, < pivot – Combine: just append Lecture 15 CS107, Prof. Steinberg, f10 41
Quick Sort Quick Sort 2 5 1 8 3 9 4 Pivot -> 4 2 1 3 5 8 9 1 2 3 5 8 9 1 2 3 4 5 8 9 How do we sort the groups? Quick sort! If group length = 1, already sorted Lecture 15 CS107, Prof. Steinberg, f10 42
Partitioning Partitioning How to separate by the pivot • Scan from small indexes looking for a number > pivot • Scan from large indexes looking for a number < pivot • Swap the two numbers Lecture 15 CS107, Prof. Steinberg, f10 43
Partitioning Partitioning 2 2 1 1 9 9 8 8 7 7 4 4 5 5 10 10 Pivot = 6 Lecture 15 CS107, Prof. Steinberg, f10 44
Partitioning Partitioning 2 2 1 1 9 9 8 8 7 7 4 4 5 5 10 10 Pivot = 6 Lecture 15 CS107, Prof. Steinberg, f10 45
Partitioning Partitioning 2 2 1 1 5 5 8 8 7 7 4 4 9 9 10 10 Pivot = 6 Lecture 15 CS107, Prof. Steinberg, f10 46
Partitioning Partitioning 2 2 1 1 5 5 8 8 7 7 4 4 9 9 10 10 Pivot = 6 Lecture 15 CS107, Prof. Steinberg, f10 47
Partitioning Partitioning 2 2 1 1 5 5 4 4 7 7 8 8 9 9 10 10 Pivot = 6 Lecture 15 CS107, Prof. Steinberg, f10 48
Partitioning Partitioning 2 2 1 1 5 5 4 4 7 7 8 8 9 9 10 10 Pivot = 6 Lecture 15 CS107, Prof. Steinberg, f10 49
Recommend
More recommend