מיון (Sorting) קלט : מערך בן n מספרים. פלט : מערך ובו המספרים אותם מאוחסנים בסדר עולה. 12311561141163194423935649971231156114116319442393564997.

Slides:



Advertisements
Similar presentations
Chapter 7 Sorting Part II. 7.3 QUICK SORT Example left right pivot i j 5 > pivot and should go to the other side. 2 < pivot and should go to.
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
מבוא למדעי המחשב לתעשייה וניהול דוגמאות ותרגול נוסף במערך חד ממדי הרצאה 12.
1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
Insertion Sort void inssort (ELEM * array, int n) { for (int I=1; I0) && (key(array[j])
CS 162 Intro to Programming II Quick Sort 1. Quicksort Maybe the most commonly used algorithm Quicksort is also a divide and conquer algorithm Advantage.
Quick Sort. 2 Divide: Pick any element p as the pivot, e.g, the first element Partition the remaining elements into FirstPart, which contains all elements.
טבלאות סמלים נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח.
גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות.
קורס אלגוריתמים ספר הקורס: מרצה: נעם ניסן מתרגלים:
Data Structures: Sorts, CS, TAU 1 שמושים ביישומים רבים יש n רשומות, לכל רשומה מפתח: K 1, …..,K n רוצים לסדר את הרשומות כך שהמפתחות לא בסדר יורד (יתכנו.
פעולות מילון Insert, Delete, Search Binary Search Tree, AVL, 2-3 Tree, Skip List O(log n) האם יש מבנה עם סבוכיות (1)O? לא למפתח כלשהו.
מבני נתונים 1 – מבנה התרגולים
עצים ועצי חיפוש חומר קריאה לשיעור זה Chapter 5.5– Trees (91 – 97)
גרפים ממשקלים גרף ממשקל הוא גרף עם משקל לכל קשת עץ פורש הוא עץ שצמתיו הם כל הצמתים של הגרף וקשתותיו הן קשתות הגרף.
מה החומר למבחן ? כל החומר שנלמד בהרצאות ובתרגולים. לגבי backtracking: לא תידרשו לממש אלגוריתם, אך כן להבין או להשלים מימוש נתון. אחת משאלות המבחן מבוססת.
משפט ההרכבה Composition Theorem תהי C מחלקה של פונקציות בוליניות תהי נגדיר סדרת פונקציות שניתנות לחישוב בזמן פולינומיאלי.
בהסתברות לפחות למצא בעיה במודל PAC עבור בהסתברות ε הפונקציה f טועה מודל ONLINE 1. אחרי כל טעות הפונקציה משתפרת 2. מספר הטעיות קטן.
מבוא למדעי המחשב תרגול 4 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
רקורסיות 18 יוני יוני יוני 1518 יוני יוני יוני 1518 יוני יוני יוני 151.
Quicksort. 2 Introduction * Fastest known sorting algorithm in practice * Average case: O(N log N) * Worst case: O(N 2 ) n But, the worst case seldom.
תזכורת: גרפים גרף (G=(V,E V|=n, |E|=m| מכוון \ לא מכוון דרגה של קדקד
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
מודל ONLINE לומדמורה 1. כל ניתן לחישוב בזמן פולינומיאלי 2. אחרי מספר פולינומיאלי של טעיות ( ) הלומד לא טועה ז"א שווה ל- Littlestone 1988.
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תרגול 7 עצי B
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
Sorting II: הפרד ומשול. Last week: in-place sorting Bubble Sort – O(n 2 ) comparisons –O(n) best case comparisons, O(n 2 ) exchanges Selection Sort -
1 שמושים ביישומים רבים יש n רשומות, לכל רשומה מפתח: K 1,…..,K n רוצים לסדר את הרשומות כך שהמפתחות לא בסדר יורד (יתכנו כפולים) קריטריונים ליעילות: לא תמיד.
S: Application of quicksort on an array of ints: partitioning.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
תזכורת : אלגברה ליניארית מסקנה קלט : וקטורים פלט : האם u תלוי ליניארית ב קלט : מערכת של n משואות לינאריות ב -m נעלמים. פלט : פתרון, או שאין כזה. אלגוריתם.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מיון (Sorting) קלט : מערך בן n מספרים. פלט : מערך ובו המספרים אותם מאוחסנים בסדר עולה
Data Structures, CS, TAU, RB-Tree 1 עץ אדום-שחור - עץ חיפוש בינארי - בכל צומת ביט אינפורמציה נוסף - צבע « עץ “ כמעט מאוזן ” « (O(log n במקרה גרוע ביותר.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א.
1 Sorting We have actually seen already two efficient ways to sort:
עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים
1 - גמישות בבינאריות גמישות בעומק - עץ חיפוש בינארי: ממוצע O(log n) גרוע ביותר (O(n - היינו רוצים לשמור את העץ מאוזן תמיד Data Structures, CS, TAU
A. Frank File Organization Hardware Size Parameters.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Points on a perimeter (Convex Hull) קורס – מבוא לעבוד מקבילי מבצעים – אריאל פנדלר יאיר ברעם.
CS2420: Lecture 11 Vladimir Kulyukin Computer Science Department Utah State University.
- אמיר רובינשטיין מיונים - Sorting משפט : חסם תחתון על מיון ( המבוסס על השוואות בלבד ) של n מפתחות הינו Ω(nlogn) במקרה הגרוע ובממוצע. ניתן לפעמים.
Sorting Text Read Shaffer, Chapter 7 Sorting O(N 2 ) sorting algorithms: – Insertion, Selection, Bubble O(N log N) sorting algorithms – HeapSort, MergeSort,
Chapter 7 Internal Sorting. Sorting Each record contains a field called the key. –Linear order: comparison. Measures of cost: –Comparisons –Swaps.
מבוא למדעי המחשב הרצאה 11: תכנות רקורסיבי 4 כולל מיון רקורסיבי 1.
Sorting. Sorting Terminology Sort Key –each element to be sorted must be associated with a sort key which can be compared with other keys e.g. for any.
Exchange sort (Bubblesort) compares two consecutive items in the list, and swap them if they are out of order. for (i=1;i=i;j--) if.
Data Structures Hanoch Levi and Uri Zwick March 2011 Lecture 3 Dynamic Sets / Dictionaries Binary Search Trees.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 12. ספריות.
Bubble Sort Example
1 Programming for Engineers in Python Autumn Lecture 9: Sorting, Searching and Time Complexity Analysis.
Sorting Algorithms Merge Sort Quick Sort Hairong Zhao New Jersey Institute of Technology.
Internal Sorting Each record contains a field called the key. The keys can be places in a linear order. The Sorting Problem Given a sequence of record.
1 Overview Divide and Conquer Merge Sort Quick Sort.
Programming Arrays.
שיעור עשירי: מיונים, חיפושים, וקצת סיבוכיות חישוב
ערמות make-heap Operation insert find-min delete-min union decrease-key delete 1 Binary Heap log n n Binomial Heap Fibonacci Heap † Relaxed Heap Linked.
מבוא למדעי המחשב סיבוכיות.
מבנה נתונים ואלגוריתמים
תירגול 14: מבני נתונים דינאמיים
مرتب سازي سريع Quicksort
Marina Kogan Sadetsky –
מבני נתונים ויעילות אלגוריתמים
Mergesort.
שיעור עשירי: מיונים, חיפושים, וקצת סיבוכיות חישוב
Presentation transcript:

מיון (Sorting) קלט : מערך בן n מספרים. פלט : מערך ובו המספרים אותם מאוחסנים בסדר עולה

BubbleSort for (i=0; i<n-1; i++){ for (j=n-2; j>=i; j--){ If (a[j] > a[j+1]) i=0 j=15 swap (&a[j],&a[j+1]); }} n=17

BubbleSort for (i=0; i<n-1; i++){ n=17 for (j=n-2; j>=i; j--){ If (a[j] > a[j+1]) i=0 j=14 swap (&a[j],&a[j+1]); }}

BubbleSort for (i=0; i<n-1; i++){ n=17 for (j=n-2; j>=i; j--){ If (a[j] > a[j+1]) i=0 j=13 swap (&a[j],&a[j+1]); }}

BubbleSort for (i=0; i<n-1; i++){ n=17 for (j=n-2; j>=i; j--){ If (a[j] > a[j+1]) i=0 swap (&a[j],&a[j+1]); }}

BubbleSort for (i=0; i<n-1; i++){ n=17 for (j=n-2; j>=i; j--){ If (a[j] > a[j+1]) i=0 swap (&a[j],&a[j+1]); }}

BubbleSort for (i=0; i<n-1; i++){ n=17 for (j=n-2; j>=i; j--){ If (a[j] > a[j+1]) i=0 swap (&a[j],&a[j+1]); }} אבר מינימאלי i=1

BubbleSort for (i=0; i<n-1; i++){ n=17 for (j=n-2; j>=i; j--){ If (a[j] > a[j+1]) swap (&a[j],&a[j+1]); }} i=1

for (i=0; i<n-1; i++){ for (j=n-2; j>=i; j--){ If (a[j] > a[j+1]) swap (&a[j],&a[j+1]); }} אבר מינימאלי שני

for (i=0; i<n-1; i++){ for (j=n-2; j>=i; j--){ If (a[j] > a[j+1]) swap (&a[j],&a[j+1]); }} i= 0,1,…,n-2 j= n-2,n-3,…,i O(1) סיבוכיות מקום נוסף סיבוכיות זמן

BubbleSort סיבוכיות זמן סיבוכיות מקום נוסף

HeapSort תור עדיפויות הוא מבנה נתונים המוגדר ע " י הפעולות הבאות : 1.צור ערימה ריקה MakeHeap(Q) - 2.הכנס רשומה x לערימה - Insert(x,Q) 3.הדפס את הרשומה עם המפתח הגדול ביותר - Max(Q) 4.הוצא את הרשומה עם המפתח הגדול ביותר - DeleteMax(Q) 1.MakeHeap(Q) 2.for (i=0 ;i=n-1;i++) Insert(A[i],Q) 3.for (i=n-1;i=0;i--) 4. {A[i]=Max(Q); DeleteMax(Q)}

1.MakeHeap(Q) 2.for (i=0 ;i=n-1;i++) Insert(A[i],Q) 3.for (i=n-1;i=0;i--) 4. {A[i]=Max(Q); DeleteMax(Q)} סיבוכיות מקום נוסף סיבוכיות זמן O(1) O(n log n) O(n)O(n)

BubbleSort סיבוכיות זמן סיבוכיות מקום נוסף HeapSort האם אפשר בסיבוכיות מקום ?O(1)

1.MakeHeap(A) 2.for (i=n;i=2;i--) 3. {X=Max(A); \* X=A[1] *\ 4. DeleteMax(A) 5. A[i]=X}

1.MakeHeap(A) 2.for (i=n;i=2;i--) 3. {X=Max(A); \* X=A[1] *\ 4. DeleteMax(A) 5. A[i]=X}

MakeHeap(A) 2.for (i=n;i=2;i--) 3. {X=Max(A); \* X=A[1] *\ 4. DeleteMax(A) 5. A[i]=X}

MakeHeap(A) 2.for (i=n;i=2;i--) 3. {X=Max(A); \* X=A[1] *\ 4. DeleteMax(A) 5. A[i]=X}

MakeHeap(A) 2.for (i=n;i=2;i--) 3. {X=Max(A); \* X=A[1] *\ 4. DeleteMax(A) 5. A[i]=X}

MakeHeap(A) 2.for (i=n;i=2;i--) 3. {X=Max(A); \* X=A[1] *\ 4. DeleteMax(A) 5. A[i]=X} בסוף נקבל

MakeHeap(A) 2.for (i=n;i=2;i--) 3. {X=Max(A); \* X=A[1] *\ 4. DeleteMax(A) 5. A[i]=X} בסוף נקבל

1.MakeHeap(A) 2.for (i=n;i=2;i--) 3. {X=Max(A); 4. DeleteMax(A) 5. A[i]=X} סיבוכיות זמן O(?) O(log n) O(n)O(n) O(n log n) O(1) סיבוכיות מקום נוסף O(1)

MakeHeap 2. נגש לתת-עץ של צמת שהוא לא עלה 1. כל עלה הוא תת-עץ ערימה 3. נבדוק אם הוא ערימה ז"א אם לא תבציע Sift-down לתת העץ j

MakeHeap 2. נגש לתת-עץ של צמת שהוא לא עלה 1. כל עלה הוא תת-עץ ערימה 3. נבדוק אם הוא ערימה ז"א אם לא תבציע Sift-down לתת העץ j

MakeHeap 2. נגש לתת-עץ של צמת שהוא לא עלה 1. כל עלה הוא תת-עץ ערימה 3. נבדוק אם הוא ערימה ז"א אם לא תבציע Sift-down לתת העץ j

MakeHeap 2. נגש לתת-עץ של צמת שהוא לא עלה 1. כל עלה הוא תת-עץ ערימה 3. נבדוק אם הוא ערימה ז"א אם לא תבציע Sift-down לתת העץ j

MakeHeap סיבוכיות זמן

MakeHeap סיבוכיות זמן

הוכחה שניה

BubbleSort סיבוכיות זמן סיבוכיות מקום נוסף HeapSort

QuickSort Partition(a,1,17,pivot) QuickSort(a,1,17) 13 =pivot Choose-pivot

QuickSort(a,1,12) QuickSort(a,13,17)

QuickSort(Key *A, int left, int right) int i, j, p; if (left >= right) return ; p = choose_pivot(A,left,right); i = partition(A,left,right,p); QuickSort(A, left, i-1); QuickSort(A,i,right); left right 41 p= i=

Partition(A,left,right,p) i=left; j=right; while (A[i]<p) i++; while (A[j]>p) j--; if (i<=j) { swap(a[i],a[j]); i++; j--; } סיבוכיות זמן

ניתוח זמן של QuickSort Partition(A,1,n,pivot) QuickSort(A,1,n) QuickSort(A,1,n 1 )QuickSort(A, n 1,n) סיבוכיות זמן סיבוכיות מקום נוסף

המקרה הגרוע סבוכיות מקום נוסף סבוכיות זמן

המקרה הטוב סבוכיות מקום נוסף סבוכיות זמן

המקרה הממוצע נוסחת הנסיגה דומה לנוסחת הנסיגה למספר ההשוואות הנדרש לבניית עץ חיפוש בינרי אקראי. שיטת הפתרון זהה. פרטים בספר הלימוד, פרק 8. סבוכיות זמן בחירה רנדומלית של ציר

סבוכיות מקום נוסף ממוצע פתרון

BubbleSort סיבוכיות זמן סיבוכיות מקום נוסף HeapSortQuickSort ממוצע

נראה ממוש ל-QuickSort שיתן סבוכיות מקום נוסף מדויק QuickSort(A, left, right) while (left < right){ p = choose_pivot(A,left,right); i = partition(a,left,right,p); if (i-1 < right – i + 1) QuickSort(A, left, i-1); left = i ; else QuickSort(A, i, right); right = i - 1 ; i leftright leftright

BubbleSort סיבוכיות זמן סיבוכיות מקום נוסף HeapSortQuickSort ממוצע