4.2 Mergesortcis110/19su/lectures/42mergesort.pdfLOGO STYLE GUIDE Schools within the University 19 5...
Transcript of 4.2 Mergesortcis110/19su/lectures/42mergesort.pdfLOGO STYLE GUIDE Schools within the University 19 5...
![Page 1: 4.2 Mergesortcis110/19su/lectures/42mergesort.pdfLOGO STYLE GUIDE Schools within the University 19 5 Mergesort:""Example" Trace of merge results for top-down mergesort Section(4.2(](https://reader033.fdocuments.us/reader033/viewer/2022042807/5f80c49cee70917cb867ae52/html5/thumbnails/1.jpg)
Schools within the UniversityLOGO STYLE GUIDE
19
1
4.2 Mergesort
Section 4.2
![Page 2: 4.2 Mergesortcis110/19su/lectures/42mergesort.pdfLOGO STYLE GUIDE Schools within the University 19 5 Mergesort:""Example" Trace of merge results for top-down mergesort Section(4.2(](https://reader033.fdocuments.us/reader033/viewer/2022042807/5f80c49cee70917cb867ae52/html5/thumbnails/2.jpg)
Schools within the UniversityLOGO STYLE GUIDE
19
2 Section 4.2
Mergesort
![Page 3: 4.2 Mergesortcis110/19su/lectures/42mergesort.pdfLOGO STYLE GUIDE Schools within the University 19 5 Mergesort:""Example" Trace of merge results for top-down mergesort Section(4.2(](https://reader033.fdocuments.us/reader033/viewer/2022042807/5f80c49cee70917cb867ae52/html5/thumbnails/3.jpg)
Schools within the UniversityLOGO STYLE GUIDE
19
3
Mergesort Algorithm: • Divide array into two halves. • Recursively sort each half. • Merge two halves to make sorted whole.
Section 4.2
![Page 4: 4.2 Mergesortcis110/19su/lectures/42mergesort.pdfLOGO STYLE GUIDE Schools within the University 19 5 Mergesort:""Example" Trace of merge results for top-down mergesort Section(4.2(](https://reader033.fdocuments.us/reader033/viewer/2022042807/5f80c49cee70917cb867ae52/html5/thumbnails/4.jpg)
Schools within the UniversityLOGO STYLE GUIDE
19
4
Mergesort: Breakdown
![Page 5: 4.2 Mergesortcis110/19su/lectures/42mergesort.pdfLOGO STYLE GUIDE Schools within the University 19 5 Mergesort:""Example" Trace of merge results for top-down mergesort Section(4.2(](https://reader033.fdocuments.us/reader033/viewer/2022042807/5f80c49cee70917cb867ae52/html5/thumbnails/5.jpg)
Schools within the UniversityLOGO STYLE GUIDE
19
5
Mergesort: Example
Section 4.2 Trace of merge results for top-down mergesort
a[] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 M E R G E S O R T E X A M P L E merge(a, aux, 0, 0, 1) E M R G E S O R T E X A M P L E merge(a, aux, 2, 2, 3) E M G R E S O R T E X A M P L E merge(a, aux, 0, 1, 3) E G M R E S O R T E X A M P L E merge(a, aux, 4, 4, 5) E G M R E S O R T E X A M P L E merge(a, aux, 6, 6, 7) E G M R E S O R T E X A M P L E merge(a, aux, 4, 5, 7) E G M R E O R S T E X A M P L E merge(a, aux, 0, 3, 7) E E G M O R R S T E X A M P L E merge(a, aux, 8, 8, 9) E E G M O R R S E T X A M P L E merge(a, aux, 10, 10, 11) E E G M O R R S E T A X M P L E merge(a, aux, 8, 9, 11) E E G M O R R S A E T X M P L E merge(a, aux, 12, 12, 13) E E G M O R R S A E T X M P L E merge(a, aux, 14, 14, 15) E E G M O R R S A E T X M P E L merge(a, aux, 12, 13, 15) E E G M O R R S A E T X E L M P merge(a, aux, 8, 11, 15) E E G M O R R S A E E L M P T X merge(a, aux, 0, 7, 15) A E E E E G L M M O P R R S T X
lo hi
![Page 6: 4.2 Mergesortcis110/19su/lectures/42mergesort.pdfLOGO STYLE GUIDE Schools within the University 19 5 Mergesort:""Example" Trace of merge results for top-down mergesort Section(4.2(](https://reader033.fdocuments.us/reader033/viewer/2022042807/5f80c49cee70917cb867ae52/html5/thumbnails/6.jpg)
Schools within the UniversityLOGO STYLE GUIDE
19
6
Merging • Merging. Combine two pre-‐sorted lists into a sorted whole. • How to merge efficiently? Use an auxiliary array.
Section 4.2
![Page 7: 4.2 Mergesortcis110/19su/lectures/42mergesort.pdfLOGO STYLE GUIDE Schools within the University 19 5 Mergesort:""Example" Trace of merge results for top-down mergesort Section(4.2(](https://reader033.fdocuments.us/reader033/viewer/2022042807/5f80c49cee70917cb867ae52/html5/thumbnails/7.jpg)
Schools within the UniversityLOGO STYLE GUIDE
19
7
Merging
int[] aux = new int[N]; // merge into auxiliary array int i = lo, j = mid; for (int k = 0; k < N; k++) { if (i == mid) aux[k] = a[j++]; else if (j == hi) aux[k] = a[i++]; else if (a[j] < a[i]) aux[k] = a[j++]; else aux[k] = a[i++]; } // copy back for (int k = 0; k < N; k++) { a[lo + k] = aux[k]; }
Section 4.2
• Merging. Combine two pre-‐sorted lists into a sorted whole. • How to merge efficiently? Use an auxiliary array.
![Page 8: 4.2 Mergesortcis110/19su/lectures/42mergesort.pdfLOGO STYLE GUIDE Schools within the University 19 5 Mergesort:""Example" Trace of merge results for top-down mergesort Section(4.2(](https://reader033.fdocuments.us/reader033/viewer/2022042807/5f80c49cee70917cb867ae52/html5/thumbnails/8.jpg)
Schools within the UniversityLOGO STYLE GUIDE
19
8
public class Merge { public static void sort(int[] a) { sort(a, 0, a.length); } // Sort a[lo, hi). public static void sort(int[] a, int lo, int hi) { int N = hi - lo; if (N <= 1) return; // recursively sort left and right halves int mid = lo + N/2; sort(a, lo, mid); sort(a, mid, hi); // merge sorted halves (see previous slide) } }
Mergesort: Java ImplementaQon
Section 4.2
![Page 9: 4.2 Mergesortcis110/19su/lectures/42mergesort.pdfLOGO STYLE GUIDE Schools within the University 19 5 Mergesort:""Example" Trace of merge results for top-down mergesort Section(4.2(](https://reader033.fdocuments.us/reader033/viewer/2022042807/5f80c49cee70917cb867ae52/html5/thumbnails/9.jpg)
Schools within the UniversityLOGO STYLE GUIDE
19
9
Analysis. To mergesort array of size N, mergesort two subarrays of size N / 2, and merge them together using ≤ N compares.
T(N)
T(N / 2) T(N / 2)
T(N / 4) T(N / 4) T(N / 4) T(N / 4)
T(2) T(2) T(2) T(2) T(2) T(2) T(2) T(2)
N
T(N / 2k)
2 (N / 2)
4 (N / 4)
N / 2 (2)
.���
.���
.
log2 N
N log2 N
Mergesort: MathemaQcal Analysis
Section 4.2
![Page 10: 4.2 Mergesortcis110/19su/lectures/42mergesort.pdfLOGO STYLE GUIDE Schools within the University 19 5 Mergesort:""Example" Trace of merge results for top-down mergesort Section(4.2(](https://reader033.fdocuments.us/reader033/viewer/2022042807/5f80c49cee70917cb867ae52/html5/thumbnails/10.jpg)
Schools within the UniversityLOGO STYLE GUIDE
19
10
Mergesort: MathemaQcal Analysis • MathemaQcal analysis.
• ValidaQon. Theory agrees with observaQons.
N log2 N average
1/2 N log2 N
N log2 N
comparisons analysis
worst
best
1,279 million 1,216 million 50 million
485 million 460 million 20 million
133 thousand
predicted actual N
120 thousand 10,000
Section 4.2
![Page 11: 4.2 Mergesortcis110/19su/lectures/42mergesort.pdfLOGO STYLE GUIDE Schools within the University 19 5 Mergesort:""Example" Trace of merge results for top-down mergesort Section(4.2(](https://reader033.fdocuments.us/reader033/viewer/2022042807/5f80c49cee70917cb867ae52/html5/thumbnails/11.jpg)
Schools within the UniversityLOGO STYLE GUIDE
19
11
SorQng Challenge 2 Q. A credit card company sorts 10 million customer account numbers, for use with binary search. Using mergesort, what kind of computer is needed?
A. Toaster B. Cell phone C. Your laptop D. Supercomputer E. Google server farm
Section 4.2
![Page 12: 4.2 Mergesortcis110/19su/lectures/42mergesort.pdfLOGO STYLE GUIDE Schools within the University 19 5 Mergesort:""Example" Trace of merge results for top-down mergesort Section(4.2(](https://reader033.fdocuments.us/reader033/viewer/2022042807/5f80c49cee70917cb867ae52/html5/thumbnails/12.jpg)
Schools within the UniversityLOGO STYLE GUIDE
19
12
Mergesort: Lesson • Lesson. Great algorithms can be more powerful than supercomputers.
N = 1 billion
2 weeks
3 centuries
InserQon Mergesort Compares Per Second Computer
3 hours 107 laptop
instant 1012 super
Section 4.2