Heap Sort Quick Sort Lecture 9 of Geiger

  • Slides: 25
Download presentation
Heap. Sort Quick. Sort Lecture 9 of Geiger & Itai’s slide brochure www. cs.

Heap. Sort Quick. Sort Lecture 9 of Geiger & Itai’s slide brochure www. cs. technion. ac. il/~dang/course. DS : ' מיונים א (Heap. Sort) מיון ערימה Quick. Sort חומר קריאה לשיעור זה Chapter 7 - Heapsort Chapter 8 - Quicksort © Geiger & Itai, 2012 1

Heap. Sort Quick. Sort © cs, Technion מיון בעזרת תור עדיפויותערימה - Heap. Sort

Heap. Sort Quick. Sort © cs, Technion מיון בעזרת תור עדיפויותערימה - Heap. Sort 4

Heap. Sort Quick. Sort make-heap פרוצדורת 5 5 8 8 6 9 2 7

Heap. Sort Quick. Sort make-heap פרוצדורת 5 5 8 8 6 9 2 7 1 5 9 2 9 7 6 1 5 8 6 2 9 1 7 1 2 3 4 5 6 7 5 8 7 2 9 1 6 1 2 3 4 5 6 7 5 9 9 2 8 1 6 5 9 7 2 8 1 6 1 2 3 4 5 6 7 2 5 9 7 2 8 1 6 1 2 3 4 5 6 7 8 6 1 8 2 9 5 7 7 1 6 9 5 7 2 8 1 6 1 2 3 4 5 6 7 2 7 5 1 6 9 8 7 2 5 1 6 1 2 3 4 5 6 7 7

Heap. Sort Quick. Sort make-heap נכונות פרוצדורת 5 8 2 © cs, Technion 6

Heap. Sort Quick. Sort make-heap נכונות פרוצדורת 5 8 2 © cs, Technion 6 9 1 7 8

Heap. Sort Quick. Sort Heap. Sort : דוגמא 9 7 8 2 6 del_max

Heap. Sort Quick. Sort Heap. Sort : דוגמא 9 7 8 2 6 del_max 1 5 7 8 6 2 1 8 Sift_down(r) 5 6 2 7 1 5 , המשופר Heap. Sort עם שימוש ב : Make_Heap © cs, Technion 10

Heap. Sort Quick. Sort Heap. Sort דוגמא למיון 1 6 2 9 1 7

Heap. Sort Quick. Sort Heap. Sort דוגמא למיון 1 6 2 9 1 7 : (7 המערך הנתון )כמו בשקף 9 1 8 2 7 3 2 4 5 5 1 6 6 7 : (7 )כמו בשקף make_heap המערך לאחר 1 del 2 5 1 del 1 7 6 4 2 1 3 2 5 1 3 5 1 1 5 3 1 1 2 2 2 4 2 del 3 1 3 6 7 5 5 7 1 2 2 1 1 5 5 sift 1 2 2 1 4 2 6 5 1 1 2 5 6 5 7 8 9 6 8 1 6 5 2 8 1 9 7 7 2 © cs, Technion sift 5 2 sift 2 2 4 1 3 6 7 1 del 1 2 3 5 6 2 1 del 6 4 6 8 2 7 5 1 2 1 sift 5 6 4 : פעולות המיון 3 8 7 5 6 6 2 3 8 2 8 9 2 4 5 1 2 3 4 5 6 7 : המערך הממוין 11

Heap. Sort Quick. Sort © cs, Technion אנליזת מקום וזמן - Heap. Sort 12

Heap. Sort Quick. Sort © cs, Technion אנליזת מקום וזמן - Heap. Sort 12

Heap. Sort Quick. Sort מיון Quick. Sort(Key *A, int l, int r){ if (l

Heap. Sort Quick. Sort מיון Quick. Sort(Key *A, int l, int r){ if (l >= r) return ; int p = choose_pivot(A, l, r); int i = partition(A, l, r, p); Quick. Sort(A, l, i-1); Quick. Sort(A, i+1, r); } © cs, Technion : הפרד : משול . מחזירה את האינדקס בו שמור איבר הציר אחרי הפעלתה partition השגרה 17

Heap. Sort Quick. Sort פרוצדורת ההפרדה לפי איבר ציר - Partition int partition( KEY

Heap. Sort Quick. Sort פרוצדורת ההפרדה לפי איבר ציר - Partition int partition( KEY *A, int left, int right, int pivot){ swap (A+pivot, A+right); int i = left; for (int j=left; j < right; j++) 7 11 12 6 if (A[j] < A[right]) { swap(A+i, A+j); 10 11 12 6 i++; } 6 11 12 10 swap(A+right, A+i); return i; } 6 1 12 10 . העברת איבר הציר © cs, Technion . pivot=left : דוגמא . 7 איבר הציר הוא המספר 9 1 3 2 8 10 9 1 3 2 8 7 9 11 3 2 8 7 6 1 3 10 9 11 12 2 8 7 6 1 3 2 9 11 12 10 8 7 6 1 3 2 7 i 11 12 10 8 9 19

Heap. Sort Quick. Sort ניתוח מקום 1…n 1… 0 2…n 3…n 2… 1 3…

Heap. Sort Quick. Sort ניתוח מקום 1…n 1… 0 2…n 3…n 2… 1 3… 2 n-1…n-2 © cs, Technion n…n 22

Heap. Sort Quick. Sort דוגמא להתנהגות מחסנית הרקורסיה Quick. Sort(Key *a, int l, int

Heap. Sort Quick. Sort דוגמא להתנהגות מחסנית הרקורסיה Quick. Sort(Key *a, int l, int r) { if (l >= r) return ; int p = choose_pivot(a, l, r); int i = partition(a, l, r, p); Quick. Sort(a, l, i-1); Quick. Sort(a, i+1, r); } 0 1 2 4 5 1. . 1 6. . 8 0. . 4 0. . -1 1. . 4 3 1. . 3 2 2 5. . 4 4. . 3 1. . 2 3. . 2 0. . 8 3 6. . 5 3 1 7. . 8 2 7. . 7 9. . 8 3 4 5 . בכל צומת מצוין טווח האינדקסים ולצד הצומת מצוין עומק המחסנית © cs, Technion 23

Heap. Sort Quick. Sort © cs, Technion סיכום השיעור 26

Heap. Sort Quick. Sort © cs, Technion סיכום השיעור 26

Heap. Sort Quick. Sort © cs, Technion 27

Heap. Sort Quick. Sort © cs, Technion 27