Αλγόριθµοι Ταξινόµησης

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Αλγόριθµοι Ταξινόµησης"

Transcript

1 Αλγόριθµοι Ταξινόµησης Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οι αλγόριθµοι ταξινόµησης SelectionSort, InsertionSort, Mergesort, QuickSort, BucketSort Κάτω φράγµα της αποδοτικότητας Αλγορίθµων Ταξινόµησης και δένδρα αποφάσεων ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

2 Αλγόριθµοι ταξινόµησης οθέντων µιας συνάρτησης f (ordering function) και ενός συνόλου στοιχείων x 1, x2,..., x n η ταξινόµηση συνίσταται στη µετάθεση των στοιχείων ώστε να µπουν σε µια σειρά x, x,..., x η οποία να ικανοποιεί ή f ( x k 1 k ) 1 f k 2 ( x k 2 ) k n... f ( x k n ) f ( x k 1 ) f ( x k 2 )... f ( x k n ). Θα εξετάσουµε αλγόριθµους ταξινόµησης µε κύριο γνώµονα την αποδοτικότητά τους (χρόνος εκτέλεσης, χρήση µνήµης). ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

3 Ταξινόµηση µε Επιλογή (Selection Sort) Η ταξινόµηση µε επιλογή βασίζεται στα ακόλουθα τρία βήµατα: 1. επιλογή του ελάχιστου στοιχείου 2. ανταλλαγή µε το πρώτο στοιχείο 3. επανάληψη των βηµάτων 1 και 2 για τα υπόλοιπα στοιχεία. Το ελάχιστο µεταξύ i στοιχείων µπορεί να βρεθεί µε τη χρήση ενός while-loop, σε χρόνο Ο(i). Άρα ο χρόνος εκτέλεσης του Selection Sort είναι n 1 i= 1 i = O( n 2 ) ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

4 ιαδικασία Selection Sort void SelectionSort(int A[],int n){ int k; int temp; for (int i=1; i<n; i++){ k=i; for (j = i+1; j <= n; j++) if A[j]<A[k] k=j; temp = A[i]; A[i] = A[k]; A[k] = temp; } } ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

5 Παράδειγµα Selection Sort Θέση Αρχική Τιµή Με i= Με i= Με i= Με i= Με i= ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

6 Ταξινόµηση µε εισαγωγή (Insertion Sort) Η ταξινόµηση µε εισαγωγή εισάγει ένα-ένα τα στοιχεία του συνόλου που εξετάζεται, στη σωστή τους θέση. Στη φάση i: 1. υποθέτουµε πως ο πίνακας A[1..(i-1)] είναι ταξινοµηµένος, 2. εισάγουµε το στοιχείο Α[i] στην ακολουθία Α[1..(i-1)] στη σωστή θέση, 3. µετακινώνταςόλαταστοιχείαπουείναιµεγαλύτερα του Α[i] µια θέση δεξιά. Έστω µια ταξινοµηµένη ακολουθία από i στοιχεία. Ένα στοιχείο µπορεί να εισαχθεί στη σωστή του θέση µέσα στην ακολουθία σε χρόνο Ο(i). Άρα ο χρόνος εκτέλεσης του Insertion Sort είναι n 1 i= 1 i = O( n 2 ) ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

7 ιαδικασία Insertion Sort void ΙnsertionSort(int A[], int n){ int temp; for (int i=2; i<=n; i++){ temp=a[i]; for (int j=i; (j > 1)&&(temp < A[j-1]); j--) A[j]=A[j-1]; } } A[j]=temp; ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

8 Παράδειγµα Insertion Sort Θέση Αρχική Τιµή Με i= Με i= Με i= Με i= Με i= ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

9 Σύγκριση Insertion Sort και Selection Sort Ο αλγόριθµος Selection sort απαιτεί Ο(n²) βήµατα (δεν είναι δυνατή η γρήγορη έξοδος από τους βρόχους), έτσι η βέλτιστη περίπτωση είναι η ίδια µε τη χείριστη περίπτωση. Στον αλγόριθµο Insertion Sort, είναι δυνατό να βγούµε από το δεύτερο βρόχο γρήγορα. Στη βέλτιστη περίπτωση (ο πίνακας είναι ήδη ταξινοµηµένος), ο χρόνος εκτέλεσης είναι της τάξης Ο(n). Παρά τούτου, το Selection Sort είναι πιο αποδοτικό αν κρίνουµε τους αλγόριθµους µε βάση τον αριθµό των µετακινήσεων (swaps) που απαιτούν: το selection sort απαιτεί Ο(n), µετακινήσεις, το insertion sort, απαιτεί Ο(n²) µετακινήσεις (στη χείριστη περίπτωση όπου ο αρχικός πίνακας είναι ταξινοµηµένος σε φθίνουσα σειρά). ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

10 Ταξινόµηση µε Συγχώνευση (Merge sort) Η ταξινόµηση µε συγχώνευση είναι διαδικασία διαίρει και βασίλευε (divide and conquer, δηλ. αναδροµική διαδικασία όπου το πρόβληµα µοιράζεται σε µέρη τα οποία λύνονται ξεχωριστά, και µετά οι λύσεις συνδυάζονται.). Χρόνος Εκτέλεσης: Ο(n log n). Απαιτεί τη χρήση βοηθητικού πίνακα, αλλά είναι εύκολα κατανοητή και υλοποιήσιµη διαδικασία. Περιγραφή του Mergesort 1. Μοιράζουµε τον πίνακα στα δύο. 2. Αναδροµικά ταξινοµούµε τα δύο µέρη. 3. Συγχωνεύουµε τα αποτελέσµατα των πιο πάνω αναδροµικών ταξινοµήσεων. Παρατηρούµε ότι κατά την i-οστή κλήση της αναδροµικής διαδικασίας, κοµµάτια µεγέθους 2 i είναι ταξινοµηµένα. Άρα το Merge Sort χρειάζεται να κληθεί log n φορές µέχρις ότου να ταξινοµηθεί ολόκληρος ο πίνακας. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

11 Παραδείγµατα διαδοχικών κλήσεων εδοµένο Εισόδου: Μετά την πρώτη εκτέλεση του Μergesort Μετά τη δεύτερη εκτέλεση του Μergesort Μετά την τρίτη εκτέλεση του Μergesort ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

12 Ηδιαδικασία συγχώνευσης ύο ταξινοµηµένες λίστες µπορούν να συγχωνευθούν σε µία ταξινοµηµένη λίστα σε χρόνο γραµµικό ως προς το άθροισµα των µεγεθών των δύο λιστών. Η διαδικασία απαιτεί τη χρήση βοηθητικού πίνακα. Μπορούµε να χρησιµοποιούµε τον ίδιο βοηθητικό πίνακα temp για όλες τις κλήσεις του ΜergeSort. Μετά από τις δύο αναδροµικές κλήσεις του Μergesort στον αρχικό πίνακα Α, τα δύο µισά του πίνακα είναι ταξινοµηµένα. Αντιγράφουµε τα δύο µισά στο βοηθητικό πίνακα temp, και τα συγχωνεύουµε πίσω στον Α. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

13 Παράδειγµα εκτέλεσης Μerge (Συγχώνευσης) Οι αρχικοί πίνακες και οι αρχικοί δείκτες : * * Συγκρίνουµε τα στοιχεία που δείχνονται από τους δείκτες, διαλέγουµε και τυπώνουµε το µικρότερο και προχωρούµε το δείκτη αυτού: 13 * * Οutput:13 Επαναλαµβάνουµε µέχρις ότου τα στοιχεία του ενός πίνακα εξαντληθούν οπότε τυπώνουµε τα υπόλοιπα στοιχεία του άλλου πίνακα: 13 * * Οutput: 13, * *28 33 Output: 13, 14, * *28 33 Output: 13, 14, 16, * *33 Output: 13, 14, 16, 17, 20, 28 Output: 13, 14, 16, 17, 20, 28, 33, 36 ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

14 ιαδικασία Merge Sort void MergeSort(int A[], int temp[],int l, int r){ if (l==r) return; int mid = (l+r)/2; Mergesort(A, temp, l, mid); Mergesort(A, temp, mid+1, r); } int i, j, k; for (i=l; i<= r; i++) temp[i] = A[i]; for ( i=l,j=mid+1,k=l; i<=mid && j<=r && k<=r; k++) if (temp[i]<temp[j]) A[k]= temp[i]; i++; else A[k]= temp[j]; j++; for ( ; i <= mid ; i++, k++ ) A[k] = temp[i]; for ( ; j <= r ; j++, k++ ) A[k] = temp[j]; ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

15 Παράδειγµα Merge Sort εδοµένο Εισόδου: l=1, r=8, mid = 4 Μετά από την εκτέλεση των Mergesort(Α,temp,1,4) και Mergesort(A, temp, 5, 8) Μετά από την αντιγραφή ο πίνακας temp περιέχει τα ίδια στοιχεία όπως ο Α Μετά από την εκτέλεση των τελευταίων τριών for-βρόχων ο Α περιέχει ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

16 Μερικά Σχόλια Ηαντιγραφή και η συγχώνευση παίρνουν χρόνο Ο(n). Στη χείριστη περίπτωση ο χρόνος εκτέλεσης ικανοποιεί: 1. Βάση της αναδροµής Τ(0) = Τ(1) = 1 2. Αναδροµική περίπτωση Τ(n) = 2 T(n/2) + n Άρα ο χρόνος εκτέλεσης είναι Θ(n log n). Μπορούµε να µειώσουµε την ανάγκη αντιγραφής (από τον Α στον temp) µε την ανταλλαγή των ρόλων των δύο πινάκων σε διαδοχικές κλήσεις της διαδικασίας Mergesort. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

17 Κάτω φράγµα για αλγόριθµους ταξινόµησης Ξέρουµεπως το πρόβληµα ταξινόµησης µπορεί να λυθεί σε χρόνο Ο(n log n) (Heap Sort και Merge Sort). Υπάρχει πιο αποδοτικός αλγόριθµος ταξινόµησης; Θα δείξουµε πως κάθε αλγόριθµος ταξινόµησης είναι Ω(n log n). Ως µονάδα µέτρησης αποδοτικότητας θα χρησιµοποιήσουµε τον αριθµό συγκρίσεων που απαιτεί κάποιος αλγόριθµος. Υποθέτουµε ότι κάθε στοιχείο του πίνακα που θέλουµε να ταξινοµήσουµε είναι διαφορετικό από όλα τα άλλα. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

18 Σειριακή διάταξη στοιχείων και ταξινόµηση Ησυµπεριφορά ενός αλγόριθµου ταξινόµησης εξαρτάται µόνο από τη σχετική σειρά µεταξύ των στοιχείων που ταξινοµούµε και όχι από τα συγκεκριµένα στοιχεία. ηλαδή: αν Α και Β είναι δύο πίνακες τέτοιοι ώστε για κάθε i και j, A[i] < A[j] αν και µόνο αν Β[i] < B[j], τότε ο αριθµός των βηµάτων (όπως και ο αριθµός των συγκρίσεων) που θα εκτελέσει κάποιος αλγόριθµος µε δεδοµένο εισόδου Α θα είναι ο ίδιος µε τον ανάλογο αριθµό που θα εκτελέσει µε δεδοµένο εισόδου Β. Άρα, η σειριακή διάταξη των στοιχείων του δεδοµένου εισόδου Α, Α[1],Α[2],,Α[n], έχει κύρια σηµασία. Υπάρχουν n! διαφορετικές τοποθετήσεις n ξεχωριστών στοιχείων. Άρα υπάρχουν n! διαφορετικά δεδοµένα εισόδου. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

19 Ανάλυση Αλγόριθµων Ταξινόµησης Θα περιγράψουµε τη συµπεριφορά ενός αλγόριθµου ως ένα δένδρο αποφάσεων (decision tree). Στη ρίζα επιτρέπονται όλες οι διαφορετικές σειρές των στοιχείων. Ας υποθέσουµε πως ο αλγόριθµος συγκρίνει τα δύο πρώτα στοιχεία Α[1] και Α[2]. Τότε το αριστερό παιδί του δένδρου αντιστοιχεί στην περίπτωση Α[1] < Α[2] και το δεξί παιδί της ρίζας στην περίπτωση Α[2] < Α[1]. Σε κάθε κόµβο, µια σειρά στοιχείων είναι νόµιµη αν ικανοποιεί όλες τις συγκρίσεις στο µονοπάτι από τη ρίζα στον κόµβο. Τα φύλλα αντιστοιχούν στον τερµατισµό του αλγόριθµου και κάθε φύλλο περιέχει το πολύ µια νόµιµη σειρά στοιχείων. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

20 b<c ένδρο αποφάσεων για 3 στοιχεία a<b<c a<c<b c<a<b a<b a<b<c a<c<b b<a<c b<c<a c<a<b c<b<a b<a b<a<c b<c<a c<b<a c<b b<c c<b a<b<c a<c<b c<a<b b<a<c b<c<a c<b<a a<c c<a a<c c<a a<c<b c<a<b b<a<c b<c<a ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

21 Κάτω φράγµα Έστω P ένας αλγόριθµός ταξινόµησης, και έστω T το δένδρο αποφάσεων του P µε δεδοµένο εισόδου µεγέθους n. Ο αριθµός των φύλλων του Τ είναι n! Το ύψος του Τ είναι ένα κάτω φράγµα του χείριστου χρόνου εκτέλεσης του αλγόριθµου P. Ένα δυαδικό δένδρο ύψους d έχει το πολύ 2 d φύλλα. Άρα το Τ έχει ύψος το λιγότερο log n! Συµπέρασµα: P Ω(log n!) = Ω(n log n). H µέση περίπτωση είναι επίσης n log n. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

22 Αλγόριθµος Quick Sort Πρακτικά, ο πιo γρήγορος αλγόριθµος. Στη χείριστη περίπτωση ο αλγόριθµος Quick Sort είναι Ο(n²). Τέτοιες περιπτώσεις όµως έχουν µικρή πιθανότητα. Έχουµε µάλιστα ότι: Στη µέση περίπτωση ο αλγόριθµος είναι Ο(n log n). Τα περισσότερα συστήµατα χρησιµοποιούν το Quick Sort (π.χ. Unix). Όπως και το Merge Sort, παράδειγµα αλγόριθµου διαίρει και βασίλευε. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

23 Περιγραφή του Quick Sort Aν το δεδοµένο εισόδου περιέχει 0 ή 1 στοιχεία δεν κάνουµε τίποτα. ιαφορετικά, αναδροµικά: 1. διαλέγουµε ένα στοιχείο p, το οποίο ονοµάζουµε το άξον στοιχείο (the pivot) και το αφαιρούµε από το δεδοµένο εισόδου. 2. χωρίζουµε τον πίνακα σε δύο µέρη S1 και S2, όπου το S1 περιέχει όλα τα στοιχεία του πίνακα που είναι µικρότερα από το p, και το S2 περιέχει τα υπόλοιπα στοιχεία (όλα τα στοιχεία που είναι µεγαλύτερα από το p). 3. Καλούµε αναδροµικά τον αλγόριθµο στο S1, και παίρνουµε απάντηση το Τ1, και στο S2, και παίρνουµε απάντηση το Τ2. 4. Επιστρέφουµε τον πίνακα Τ1, p, T2. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

24 Παράδειγµαεφαρµογής του Quicksort χωρίζουµε µε pivot το Quicksort Quicksort 1, 3, 5, 6, 12, 22 34, 50, 72, 73, 91 Αποτέλεσµα: 1, 3, 5, 6, 12, 22, 28, 34, 50, 72, 73, 91 ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

25 ΟΑλγόριθµος Quicksort void Quicksort(int A[], int i, int j){ if (j-i<=1) return; int pivotindex = FindPivot(A, i, j); int pivot = A[pivotIndex]; swap(a, pivotindex, j); int k = partition (A, i, j-1, pivot); swap(a, k, j); Quicksort(A, i, k-1); QuickSort(A, k+1, j); } όπου η διαδικασία FindPivot(A,i,j) βρίσκει και επιστρέφει τη θέση του άξονα του Α[i j] και η διαδικασία partition (A,i,j-1,pivot), χωρίζει τον πίνακα Α[i j-1] έτσι ώστε Α[i..k-1] να περιέχει στοιχεία < pivot, A[k j-1] να περιέχει στοιχεία >pivot, και επιστρέφει την τιµή k. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

26 ιαδικασία FindPivot(A, i, j) Η αποδοτικότητα του αλγόριθµου βασίζεται στην επιλογή του µεσαίου στοιχείου (άξονα), pivot. Το pivot θα πρέπει να χωρίσει τον πίνακα Α, περίπου, σε δύο µισά. Ιδανικά, το pivot θα θέλαµε να είναι ακριβώς το µεσαίο των στοιχείων. Από την άλλη, πρέπει να µπορούµε να βρίσκουµε το pivot γρήγορα, σε χρόνο Ο(1). Πρώτη προσπάθεια: διαλέγουµε το πρώτο στοιχείο. Κακή επιλογή γιατί συχνά το δεδοµένο εισόδου είναι σχεδόν ταξινοµηµένο. Κατά συνέπεια, τα δύο µέρη θα διαφέρουν κατά πολύ ως προς τον αριθµό των στοιχείων τους, και ο αλγόριθµος θα είναι συχνά της τάξης Ο(n²). Καλύτερη επιλογή, το στοιχείο που βρίσκεται στη µέση του πίνακα: int FindPivot(int A[],int l,int r){ return ((l+r)/2); } ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

27 ιαδικασία Partition(A, l, r, p) Με δεδοµένο εισόδου τον πίνακα Α[l r], και pivot p, θέλουµε να χωρίσουµε τον πίνακα σε δύο µέρη ως προς το p. To πιο πάνω πρέπει να επιτευχθεί χωρίς τη χρήση δεύτερου πίνακα. Βασική Ιδέα: 1. Επαναλαµβάνουµε τα εξής µέχρις ότου τα l και r να διασταυρωθούν. 2. Προχώρα το l προς τα δεξιά όσο τα στοιχεία που βρίσκεις είναι µικρότερα του p, 3. προχώρα το r προς τα αριστερά όσο τα στοιχεία που βρίσκεις είναι µεγαλύτερα του p, 4. αντάλλαξε τα στοιχεία που δείχνονται από τα l και r. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

28 Ηδιαδικασία Partition int partition(int A[], int l, int r, int p)} while (r>l) { while (A[l]< p) l++; while (A[r]> p && r>= l) r--; if (l<r) swap (A, l, r); else break; } return l; } ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

29 Παράδειγµα Εκτέλεσης Partition εδοµένο Εισόδου: pivot = 48, µετακίνηση του pivot στο τέλος (swap(4, 8)): l r εκτέλεση του Partition(A, l, r, 48): l r l r l r r l ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

30 Παράδειγµα Εκτέλεσης Partition Ηδιαδικασία Partition(A, 1, 7, 48) επιστρέφει την τιµή l=5 και ακολουθείται από τη µετακίνηση swap(5, 8): Στη συνέχεια εκτελούνται αναδροµικά οι διαδικασίες Quicksort(A, 1,4), Quicksort(A, 6, 8), και έτσι επιστρέφεται το επιθυµητό αποτέλεσµα. Σηµειώστε πως µετά την εκτέλεση της Partition το στοιχείο 48 (και σε κάθε κλήση της αναδροµής το στοιχείο pivot) αποκτά τη σωστή του θέση στην ταξινοµηµένη µορφή του πίνακα. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

31 Ανάλυση του Χρόνου Εκτέλεσης Ηεύρεση του pivot απαιτεί χρόνο Ο(1) και η διαδικασία Partition(Α, l, r, p) εκτελείται σε χρόνο O(r-l) O(n). Έστω Τ(n) o χρόνος εκτέλεσης του Quicksort σε δεδοµένο εισόδου µεγέθους n. Για τη βάση της αναδροµής έχουµε: T(0) = T(1) = c και για n > 1 T(n) = T(i) + T(n-i-1) + cn όπου i είναι το µέγεθος είναι το µέγεθος του αριστερού κοµµατιού µετά από την Partition. Χείριστη περίπτωση: i = 0 ή n-1. Τότε Τ(n) = T(n-1) + cn και Τ(n) O(n²). Βέλτιστη περίπτωση: i = n/2 T(n) = 2 T(n/2) + cn και Τ(n) O(n log n). ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

32 ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, Ανάλυση Μέσης Περίπτωσης Θεωρούµεόλες τις πιθανές περιπτώσεις της συµπεριφοράς της διαδικασίας Partition(A, i, j, p), όπου j-i = n-1. Υπάρχουν n τέτοιες περιπτώσεις: το αριστερό κοµµάτι του partition µπορεί να έχει από 0 µέχρι n-1 στοιχεία. Ας υποθέσουµε πως οι n αυτές περιπτώσεις είναι ισοπίθανες, δηλαδή η κάθε µια έχει πιθανότητα 1/n. Τότε η µέση περίπτωση του Τ(n) δίνεται ως Επίλυση της αναδροµικής σχέσης δίνει T(n) O(n log n). = = + = + + = ) ( 2 )] 1 ( ) ( [ 1 ) ( n i n i i T n n c i n T i T n n c n T

33 Παρατηρήσεις Πως δουλεύει η διαδικασία Partition µε δεδοµένο εισόδου πίνακα µε πολλά στοιχεία ίσα µε το pivot; Υπάρχουν άλλες στρατηγικές για επιλογή του pivot; 1. pivot = mid(a[1], A[n], A[n/2]) 2. Στην πράξη, για δεδοµένα εισόδου µικρού µεγέθους το InsertionSort δουλεύει πιο αποδοτικά. Εποµένως µια καλή στρατηγική θα ήταν να συνδυάσουµε τους δύο αλγόριθµους ώστε σε µικρούς πίνακες (π.χ. n 10) να χρησιµοποιείται το ΙnsertionSort και σε µεγάλους το Quicksort: στη διαδικασία Quicksort ανταλλάξτε την πρώτη γραµµή µε την εξής: if (j-i)<= 10 InsertionSort(A[i j], j-i); Ακόµα ένας πιθανός τρόπος βελτίωσης του χρόνου εκτέλεσης είναι η χρήση στοίβας αντί αναδροµής. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

34 Αλγόριθµος BucketSort Έστω ότι ο πίνακας A περιέχει στοιχεία που ανήκουν στο διάστηµα [1..m]. O αλγόριθµος BucketSort πετυχαίνει ταξινόµηση του Α σε χρόνο Ο(n+m): 1. ηµιουργούµε ένα πίνακα count µήκους m και θέτουµε count[i]=0, για όλα τα i. 2. ιαβάζουµε τον πίνακα Α ξεκινώντας από το πρώτο στοιχείο. Αν διαβάσουµε το στοιχείο α, τότε αυξάνουµε την τιµή του count[α] κατά ένα. 3. ιαβάζουµε τον πίνακα count, o oποίος περιέχει αναπαράσταση του ταξινοµηµένου πίνακα, και µεταβάλλουµε ανάλογα τον πίνακα Α. π.χ. µε δεδοµένο εισόδου Α = [3, 5, 7, 2, 1, 6, 7, 4, 5, 6, 1, 3, 7] εφαρµογή του αλγόριθµου δίνει count = [2, 1, 2, 1, 2, 2, 3] το οποίο µεταφράζεται ως Α = [1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 7] ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

35 Χρόνος Εκτέλεσης Αν m O(n), τότε ο χρόνος εκτέλεσης του αλγόριθµου είναι Ο(n). Αυτό διαψεύδει το κάτω φράγµα Ω(n log n) της διαφάνειας 22; ΟΧΙ, γιατί το µοντέλο είναι διαφορετικό: στην ανάλυση κάτω φράγµατος υποθέσαµε ότι η µόνη πράξη που µπορούµε να εφαρµόσουµε στα δεδοµένα είναι η δυαδική σύγκριση στοιχείων. Ο αλγόριθµος BucketSort όµως στο Βήµα 2 ουσιαστικά εφαρµόζει m- αδική σύγκριση, σε χρόνο Ο(1). Αυτό µας υπενθυµίζει πως σχεδιάζοντας ένα αλγόριθµο και λαµβάνοντας υπόψη κάποια αποδεδειγµένα κάτω φράγµατα πρέπει πάντα να αναλύουµε το µοντέλο στο οποίο δουλεύουµε: η ύπαρξη και αξιοποίηση περισσότερων πληροφοριών πιθανόν να επιτρέπουν τη δηµιουργία αποδοτικότερων αλγορίθµων. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

36 Ταξινόµηση πολύπλοκων αρχείων Οι αλγόριθµοι που έχουµε παρουσιάσει υποθέτουν πως οι πίνακες-δεδοµένα εισόδου περιέχουν ακέραιους αριθµούς και προϋποθέτουν µετακίνηση των στοιχείων µέσα στον πίνακα. Συχνά θέλουµε να ταξινοµήσουµε αρχεία που περιέχουν πολύπλοκα αντικείµενα ως προς διάφορες σχέσεις σειράς (π.χ. ως προς αλφαβητική σειρά του τελευταίου πεδίου των αντικειµένων). Σε τέτοιες περιπτώσεις η µετακίνηση (swapping) στοιχείων είναι δαπανηρή. Αυτό µπορεί να αποφευχθεί µε τη χρήση δεικτών: ως δεδοµένο εισόδου χρησιµοποιούµε πίνακα που περιέχει δείκτες στα στοιχεία που θέλουµε να ταξινοµήσουµε. Σύγκριση γίνεται µε έλεγχο των σχετικών πεδίων των αντικειµένων που δείχνονται από τους δείκτες και µετακίνηση γίνεται στο επίπεδο των δεικτών. Οι αλγόριθµοι παραµένουν οι ίδιοι. Η µέθοδος ονοµάζεται έµµεση ταξινόµηση (indirect sorting). ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

37 Εξωτερική ταξινόµηση Έχουµευποθέσει πως για την ταξινόµηση ενός αρχείου µπορούµε να µεταφέρουµε τις εγγραφές του αρχείο σε ένα πίνακα και να εφαρµόσουµε ένα αλγόριθµο ταξινόµησης. Αυτό είναι ρεαλιστικό για µικρού µεγέθους αρχεία (που µπορούν να χωρέσουν σε ένα πίνακα κύριας µνήµης). Αυτή η µέθοδος ονοµάζεται εσωτερική ταξινόµηση (internal sorting). Σε αντίθεση, όταν θέλουµε να ταξινοµήσουµε µεγάλα αρχεία επιβάλλεται η χρήση βοηθητικής µνήµης (external sorting). Η ταξινόµηση γίνεται κατά τµήµατα: ένα µέρος του αρχείου µεταφέρεται στην κύρια µνήµη, ταξινοµείται και αποθηκεύεται σε ένα προσωρινό αρχείο. Το επόµενο τµήµα µεταφέρεται στην κύρια µνήµη και ταξινοµείται και µετά συγχωνεύεται µε το προσωρινό αρχείο. Η διαδικασία επαναλαµβάνεται µέχρι εξάντλησης του αρχικού αρχείου. Με βάση αυτή την κύρια ιδέα υπάρχουν διάφοροι αλγόριθµοι εξωτερικής ταξινόµησης. Κύριος στόχος τους είναι η αποδοτική επεξεργασία της βοηθητικής µνήµης. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

Αλγόριθµοι Ταξινόµησης

Αλγόριθµοι Ταξινόµησης Αλγόριθµοι Ταξινόµησης Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οι αλγόριθµοι ταξινόµησης SelectionSort, InsertionSort, Mergesort, QuickSort, BucketSort Κάτω φράγµα της αποδοτικότητας

Διαβάστε περισσότερα

Αλγόριθμοι ταξινόμησης

Αλγόριθμοι ταξινόμησης Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης BuubleSort, SelectionSort, InsertionSort, Merger Sort, Quick Soft ΕΠΛ Δομές Δεδομένων και Αλγόριθμοι

Διαβάστε περισσότερα

Διάλεξη 10: Αλγόριθμοι Ταξινόμησης II

Διάλεξη 10: Αλγόριθμοι Ταξινόμησης II ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 10: Αλγόριθμοι Ταξινόμησης II Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Δ. QuickSort Γρήγορη Ταξινόμηση Ε. BucketSort

Διαβάστε περισσότερα

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Α. SelectionSort Ταξινόμηση με Επιλογή Β. InsertionSort Ταξινόμηση με Εισαγωγή

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 14: Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης 3) Mergesort Ταξινόμηση με Συγχώνευση 4) BucketSort Ταξινόμηση με Κάδους Διδάσκων:

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 20: Αλγόριθμοι ΤαξινόμησηςIII Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Ε. QuickSort Γρήγορη Ταξινόμηση - Έμμεση Ταξινόμηση - Εξωτερική Ταξινόμηση Διδάσκων:

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 10: Αλγόριθμοι ΤαξινόμησηςII Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Δ. QuickSort Γρήγορη Ταξινόμηση Ε. BucketSort Ταξινόμηση με Κάδους - Έμμεση Ταξινόμηση

Διαβάστε περισσότερα

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Γ. MergeSort Ταξινόμηση με Συγχώνευση Δ. BucketSort Ταξινόμηση με Κάδους Διδάσκων:

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Διάλεξη 13: Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης SelectionSort, InsertionSort, Στις ερχόμενες διαλέξεις θα δούμε τους αλγόριθμους Mergesort,

Διαβάστε περισσότερα

ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 9 ο Ταξινόµηση Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ταξινόµηση Εισαγωγή Selection sort Insertion sort Bubble sort

Διαβάστε περισσότερα

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης: Α. SelectoSort Ταξινόμηση με Επιλογή Β. IsertoSort Ταξινόμηση με Εισαγωγή Γ. MergeSort

Διαβάστε περισσότερα

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι Πρόβλημα Ταξινόμησης Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Είσοδος : ακολουθία n αριθμών (α 1, α 2,..., α n

Διαβάστε περισσότερα

Αλγόριθμοι Ταξινόμησης Μέρος 2

Αλγόριθμοι Ταξινόμησης Μέρος 2 Αλγόριθμοι Ταξινόμησης Μέρος 2 Μανόλης Κουμπαράκης 1 Προχωρημένοι Αλγόριθμοι Ταξινόμησης Στη συνέχεια θα παρουσιάσουμε τρείς προχωρημένους αλγόριθμους ταξινόμησης: treesort, quicksort και mergesort. 2

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πρόβληµα, Στιγµιότυπο, Αλγόριθµος Εργαλεία εκτίµησης πολυπλοκότητας: οι τάξεις Ο(n), Ω(n), Θ(n) Ανάλυση Πολυπλοκότητας Αλγορίθµων

Διαβάστε περισσότερα

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2 Διαίρει-και-Βασίλευε Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2 Διαίρει-και-Βασίλευε Γενική µέθοδος σχεδιασµού αλγορίθµων: Διαίρεση σε ( 2) υποπροβλήµατα (σηµαντικά) µικρότερου µεγέθους.

Διαβάστε περισσότερα

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης Δοµές Δεδοµένων 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων Ε. Μαρκάκης Περίληψη Quicksort Χαρακτηριστικά επιδόσεων Μη αναδροµική υλοποίηση Δέντρα Μαθηµατικές ιδιότητες Δοµές Δεδοµένων 11-2

Διαβάστε περισσότερα

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 9-1

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 9-1 Σωροί Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθµος ταξινόµησης HeapSort Παραλλαγές Σωρών ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι

Διαβάστε περισσότερα

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1 Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1 Quicksort [Hoare, 62] Στοιχείο διαχωρισµού (pivot), π.χ. πρώτο, τυχαίο, Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες:

Διαβάστε περισσότερα

p

p ΑΝΑ ΡΟΜΙΚΗ ΤΑΞΙΝΟΜΗΣΗ- ΑΣΚΗΣΕΙΣ Οι μέθοδοι ταξινόμησης QUICK SORT και MERGE SORT κωδικοποιούνται εύκολα αναδρομικά Oι δυο αναδροµικοί µέθοδοι δέχονται 1ο όρισµα τον πίνακα, και δεν επιστρέφουν τίποτα.

Διαβάστε περισσότερα

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Διαίρει-και-Βασίλευε Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διαίρει-και-Βασίλευε Γενική

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 / ένδρα Ενα δένδρο είναι

Διαβάστε περισσότερα

Ταξινόμηση με συγχώνευση Merge Sort

Ταξινόμηση με συγχώνευση Merge Sort Ταξινόμηση με συγχώνευση Merge Sort 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 Πληροφορικής 1 Διαίρει και Βασίλευε Η μέθοδος του «Διαίρει και Βασίλευε» είναι μια γενική αρχή σχεδιασμού αλγορίθμων

Διαβάστε περισσότερα

Quicksort. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Quicksort. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο Quicksort ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Quicksort [Hoare, 62] Στοιχείο διαχωρισμού (pivot), π.χ. πρώτο, τυχαίο, Αναδιάταξη και διαίρεση

Διαβάστε περισσότερα

Quicksort. Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Quicksort. Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Quicksort Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Quicksort [Hoare, 6] Στοιχείο διαχωρισμού (pivot),

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ταξινόµηση Mergesort Κεφάλαιο 8 Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Ταξινόµηση µε συγχώνευση Αλγόριθµος Mergesort Διµερής συγχώνευση Αφηρηµένη επιτόπου συγχώνευση Αναλυτική ταξινόµηση

Διαβάστε περισσότερα

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων Κατ οίκον Εργασία 2 Σκελετοί Λύσεων 1. (α) Αλγόριθµος: ηµιούργησε το σύνολο P που αποτελείται από τα άκρα όλων των ευθυγράµµων τµηµάτων. Βρες το κυρτό περίβληµα του P µε τον αλγόριθµο του Graham. Ορθότητα:

Διαβάστε περισσότερα

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ιαίρει-και-βασίλευε Γενική μέθοδος σχεδιασμού αλγορίθμων: ιαίρεση σε ( 2) υποπροβλήματα

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Quicksort Κεφάλαιο 7. Ε. Μαρκάκης Επίκουρος Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Quicksort Κεφάλαιο 7. Ε. Μαρκάκης Επίκουρος Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ταξινόµηση Quicksort Κεφάλαιο 7 Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Quicksort Ο βασικός αλγόριθµος Χαρακτηριστικά επιδόσεων Μικροί υποπίνακες Μη αναδροµική υλοποίηση Δοµές Δεδοµένων

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα.0 Σταύρος Δ. Νικολόπουλος 06-7 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Ταξινόμηση Selection-Sort Bubble-Sort και

Διαβάστε περισσότερα

Quicksort. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Quicksort. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Quicksort ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Ταξινόμηση Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Το πρόβλημα Είσοδος n αντικείμενα a 1, a 2,..., a n με κλειδιά (συνήθως σε ένα πίνακα, ή λίστα, κ.τ.λ)

Διαβάστε περισσότερα

Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1

Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1 Πρόβληµα Επιλογής Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1 Πρόβληµα Επιλογής Πίνακας Α[ Αριθµός k, 1 k n. ] µε n στοιχεία (όχι ταξινοµηµένος). Υπολογισµός του k-οστού µικρότερου στοιχείου (στοιχείο

Διαβάστε περισσότερα

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ Διάλεξη 7 η Βασίλης Στεφανής Αλγόριθμοι ταξινόμησης Στην προηγούμενη διάλεξη είδαμε: Binary search Λειτουργεί μόνο σε ταξινομημένους πίνακες Πώς τους ταξινομούμε? Πολλοί τρόποι. Ενδεικτικά:

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 23 Μαρτίου 2017 1 / 20 Επιλογή Το πρόβληµα

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πρόβληµα, Στιγµιότυπο, Αλγόριθµος Εργαλεία εκτίµησης πολυπλοκότητας: οι τάξεις Ο(), Ω(), Θ( ) Ανάλυση Πολυπλοκότητας Αλγορίθµων

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 23: οµές εδοµένων και Αλγόριθµοι Ενδιάµεση Εξέταση Ηµεροµηνία : ευτέρα, 3 Νοεµβρίου 2008 ιάρκεια : 2.00-4.00 ιδάσκουσα : Άννα Φιλίππου Ονοµατεπώνυµο: ΣΚΕΛΕΤΟΙ

Διαβάστε περισσότερα

Δοµές Δεδοµένων. 10η Διάλεξη Ταξινόµηση. E. Μαρκάκης

Δοµές Δεδοµένων. 10η Διάλεξη Ταξινόµηση. E. Μαρκάκης Δοµές Δεδοµένων 10η Διάλεξη Ταξινόµηση E. Μαρκάκης Περίληψη Ταξινόµηση µε αριθµοδείκτη κλειδιού Ταξινόµηση µε συγχώνευση Αλγόριθµος Mergesort Διµερής συγχώνευση Αφηρηµένη επιτόπου συγχώνευση Αναλυτική

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Δομές Δεδομένων & Αναζήτηση & Ταξινόμηση 1 Αναζήτηση Έχω έναν πίνακα Α με Ν στοιχεία. Πρόβλημα: Βρες αν το στοιχείο x ανήκει στον πίνακα Αν ο πίνακας είναι αταξινόμητος τότε μόνη λύση σειριακή αναζήτηση

Διαβάστε περισσότερα

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 5. Απλή Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 11/11/2016 Εισαγωγή Η

Διαβάστε περισσότερα

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1 Merge Sort (Ταξινόμηση με συγχώνευση) 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 6/14/2007 3:04 AM Merge Sort 1 Κύρια σημεία για μελέτη Το παράδειγμα του «διαίρει και βασίλευε» ( 4.1.1) Merge-sort

Διαβάστε περισσότερα

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές Επιλογή Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Πρόβλημα Επιλογής Πίνακας Α[]με n στοιχεία (όχι ταξινομημένος). Αριθμός

Διαβάστε περισσότερα

Ταξινόμηση. Σαλτογιάννη Αθανασία

Ταξινόμηση. Σαλτογιάννη Αθανασία Ταξινόμηση Σαλτογιάννη Αθανασία Ταξινόμηση Ταξινόμηση Τι εννοούμε όταν λέμε ταξινόμηση; Ταξινόμηση Τι εννοούμε όταν λέμε ταξινόμηση; Ποια είδη αλγορίθμων ταξινόμησης υπάρχουν; Ταξινόμηση Τι εννοούμε όταν

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Δομές Δεδομένων & Αναζήτηση & Ταξινόμηση 1 Αναζήτηση Έχω έναν πίνακα Α με Ν στοιχεία. Πρόβλημα: Βρες αν το στοιχείο x ανήκει στον πίνακα Αν ο πίνακας είναι αταξινόμητος τότε μόνη λύση σειριακή αναζήτηση

Διαβάστε περισσότερα

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17) Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε Άπληστους Αλγόριθµους Στοιχεία άπληστων αλγορίθµων Το πρόβληµα επιλογής εργασιών ΕΠΛ 232

Διαβάστε περισσότερα

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα

Διαβάστε περισσότερα

Επιλογή. Επιμέλεια διαφανειών: Δ. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Επιλογή. Επιμέλεια διαφανειών: Δ. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο Επιλογή Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Πρόβλημα Επιλογής Πίνακας Α[ ] με n στοιχεία (όχι ταξινομημένος). Αριθμός k,

Διαβάστε περισσότερα

ίκτυα Ταξινόµησης (CLR κεφάλαιο 28)

ίκτυα Ταξινόµησης (CLR κεφάλαιο 28) ίκτυα Ταξινόµησης (CLR κεφάλαιο 28) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: ίκτυα σύγκρισης, δίκτυα ταξινόµησης Αρχή - ιτονική ταξινόµηση ΕΠΛ 232 Αλγόριθµοι και Πολυπλοκότητα 2- Μοντέλο στο οποίο

Διαβάστε περισσότερα

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο Σχεδίαση Αλγορίθμων Διαίρει και Βασίλευε http://delab.csd.auth.gr/~gounaris/courses/ad auth gounaris/courses/ad 1 Διαίρει και Βασίλευε Η γνωστότερη ρημέθοδος σχεδιασμού αλγορίθμων: 1. Διαιρούμε το στιγμιότυπο

Διαβάστε περισσότερα

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort 1, c 3, a 3, b 7, d 7, g 7, e B 0 1 3 4 5 6 7 8 9 1 BucketSort (Ταξινόμηση Κάδου) - Αρχικά θεωρείται ένα κριτήριο κατανομής με βάση το οποίο

Διαβάστε περισσότερα

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Η διαδικασία PercolateDown, Δημιουργία Σωρού O Αλγόριθμος Ταξινόμησης HeapSort Υλοποίηση, Παραδείγματα

Διαβάστε περισσότερα

Προγραµµατισµός 1 Ταξινόµηση - Αναζήτηση

Προγραµµατισµός 1 Ταξινόµηση - Αναζήτηση Προγραµµατισµός 1 Ταξινόµηση - Αναζήτηση 1 Ταξινόµηση! Δεδοµένα: Δίνεται ένας πίνακας data από N ακεραίους! Ζητούµενο: Να ταξινοµηθούν τα περιεχόµενα σε αύξουσα αριθµητική σειρά:!i : 0 data[i]

Διαβάστε περισσότερα

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής Αναδροµή Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής 1 Αναδροµή Βασική έννοια στα Μαθηµατικά και στην Πληροφορική.

Διαβάστε περισσότερα

Διάλεξη 04: Παραδείγματα Ανάλυσης

Διάλεξη 04: Παραδείγματα Ανάλυσης Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

Διαβάστε περισσότερα

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 8 Quick Sort 1 / 11 Ο αλγόριθμος QuickSort 1 Προτάθηκε από τον CAR (Tony) Hoare το 1961 2 Ο αλγόριθμος

Διαβάστε περισσότερα

Προχωρημένες έννοιες προγραμματισμού σε C

Προχωρημένες έννοιες προγραμματισμού σε C Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr)

Διαβάστε περισσότερα

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

Διαβάστε περισσότερα

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1 Διαίρει-και-Βασίλευε Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διαίρει-και-Βασίλευε Γενική μέθοδος

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 3.0 Σταύρος Δ. Νικολόπουλος 0-7 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Διαίρει και Βασίλευε Quick-sort και Merge-sort

Διαβάστε περισσότερα

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο Σχεδίαση Αλγορίθμων Διαίρει και Βασίλευε http://delab.csd.auth.gr/courses/algorithms/ auth 1 Διαίρει και Βασίλευε Η γνωστότερη ρημέθοδος σχεδιασμού αλγορίθμων: 1. Διαιρούμε το στιγμιότυπο του προβλήματος

Διαβάστε περισσότερα

Επιλογή. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Επιλογή. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο Επιλογή ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Πρόβλημα Επιλογής Πίνακας Α[]με n στοιχεία (όχι ταξινομημένος). Αριθμός k, 1 k n. Υπολογισμός

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 231: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 2013 ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση Διδάσκων Καθηγητής: Παναγιώτης Ανδρέου

Διαβάστε περισσότερα

Εργαστήριο 2: Πίνακες

Εργαστήριο 2: Πίνακες Εργαστήριο 2: Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Επεξεργασία Πινάκων - Υλοποίηση της Δυαδικής Αναζήτησης σε πίνακες - Υλοποίηση της Ταξινόμησης με Επιλογής σε πίνακες ΕΠΛ035

Διαβάστε περισσότερα

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 Χρησιµοποιούµε τη δοµή Κατ οίκον Εργασία 3 Σκελετοί Λύσεων typedef struct Node int data; struct node *lchild; struct node *rbro; node; και υποθέτουµε πως ένα τυχαίο δένδρο είναι υλοποιηµένο ως

Διαβάστε περισσότερα

Ταχεία Ταξινόμηση Quick-Sort

Ταχεία Ταξινόμηση Quick-Sort Ταχεία Ταξινόμηση Quc-Sort 7 4 9 6 2 2 4 6 7 9 4 2 2 4 7 9 7 9 2 2 9 9 Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 1 Outlne Quc-sort Αλγόριθμος Βήμα διαχωρισμού Δένδρο Quc-sort

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού

Διαβάστε περισσότερα

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: υναµικός Προγραµµατισµός Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε υναµικό Προγραµµατισµό Το πρόβληµα του πολλαπλασιασµού πινάκων ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 3- υναµικός

Διαβάστε περισσότερα

Εργαστηριακή Άσκηση 1

Εργαστηριακή Άσκηση 1 Εργαστηριακή Άσκηση 1 Επανάληψη προγραμματισμού Βασικοί Αλγόριθμοι Είσοδος τιμών από το πληκτρολόγιο Σε όλα τα προγράμματα που θα γράψουμε στην συνέχεια του εξαμήνου θα χρειαστεί να εισάγουμε τιμές σε

Διαβάστε περισσότερα

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ενότητα 2 ιαίρει και Βασίλευε Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 2 1 / 24 Επιλογή Το πρόβληµα

Διαβάστε περισσότερα

Ταξινόµηση. Παύλος Εφραιµίδης. οµές εδοµένων και

Ταξινόµηση. Παύλος Εφραιµίδης. οµές εδοµένων και Παύλος Εφραιµίδης 1 Το πρόβληµα της ταξινόµησης 2 3 ίνεται πολυ-σύνολο Σ µε στοιχεία από κάποιο σύµπαν U (πχ. U = το σύνολο των ακεραίων αριθµών). του Σ είναι η επιβολή µιας διάταξης στα στοιχεία του συνόλου

Διαβάστε περισσότερα

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων

Διαβάστε περισσότερα

Επιλογή. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Επιλογή. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Επιλογή ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012 Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012 3 5 1 Ταξινόμηση - Sorting Πίνακας Α 1 3 5 5 3 1 Ταξινόμηση (Φθίνουσα) Χωρίς Ταξινόμηση Ταξινόμηση

Διαβάστε περισσότερα

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε» Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε» ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ιαίρει-και-βασίλευε

Διαβάστε περισσότερα

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 22 Counting sort, bucket sort και radix sort 1 / 16 Ιδιότητες αλγορίθμων ταξινόμησης ευστάθεια (stable

Διαβάστε περισσότερα

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Διαίρει και Βασίλευε Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαίρει και Βασίλευε Divide and Conquer Η τεχνική διαίρει και βασίλευε αναφέρεται

Διαβάστε περισσότερα

Ταξινόμηση. Παύλος Εφραιμίδης. Δομές Δεδομένων Ταξινόμηση 1

Ταξινόμηση. Παύλος Εφραιμίδης. Δομές Δεδομένων Ταξινόμηση 1 Ταξινόμηση Παύλος Εφραιμίδης Δομές Δεδομένων Ταξινόμηση 1 Το πρόβλημα της ταξινόμησης Δομές Δεδομένων Ταξινόμηση 2 Ταξινόμηση Δίνεται πολυ-σύνολο Σ με στοιχεία από κάποιο σύμπαν U (πχ. U = το σύνολο των

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 6: ΠαραδείγματαΑνάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα -Γραμμική

Διαβάστε περισσότερα

ΗΥ240 - Παναγιώτα Φατούρου 2

ΗΥ240 - Παναγιώτα Φατούρου 2 Ενότητα 8 Ταξινόµηση ΗΥ0 - Παναγιώτα Φατούρου Ταξινόµηση Θεωρούµε έναν πίνακα Α[0..n-] µε n στοιχεία στα οποία έχει ορισθεί µια γραµµική διάταξη, δηλαδή ζεύγος στοιχείων x,y του Α, είτε x < y, ή x > y

Διαβάστε περισσότερα

Tυχαιοποιηµένοι Αλγόριθµοι (CLR, κεφάλαιo 8.3 και 10)

Tυχαιοποιηµένοι Αλγόριθµοι (CLR, κεφάλαιo 8.3 και 10) Tυχαιοποιηµένοι Αλγόριθµοι (CLR, κεφάλαιo 8.3 και 10) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Ο τυχαιοποιµένος αλγόριθµος QuickSort Αλγόριθµοι Επιλογής Τυχαιποιηµένος Αλγόριθµος Ο αλγόριθµος των

Διαβάστε περισσότερα

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης Δοµές Δεδοµένων 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι Ε. Μαρκάκης Περίληψη Bubble Sort Selection Sort Insertion Sort Χαρακτηριστικά επιδόσεων Shellsort Ταξινόµηση συνδεδεµένων λιστών Δοµές Δεδοµένων

Διαβάστε περισσότερα

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1 Ο αλγόριθμος Quick-Sort 7 4 9 6 2 2 4 6 7 9 4 2 2 4 7 9 7 9 2 2 9 9 6/14/2007 3:42 AM Quick-Sort 1 Κύρια σημεία για μελέτη Quick-sort ( 4.3) Αλγόριθμος Partition step Δέντρο Quick-sort Παράδειγμα εκτέλεσης

Διαβάστε περισσότερα

Προγραµµατιστικές Τεχνικές

Προγραµµατιστικές Τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης

Διαβάστε περισσότερα

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: υναµικός Προγραµµατισµός Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε υναµικό Προγραµµατισµό Το πρόβληµα του πολλαπλασιασµού πινάκων ΕΠΛ 3 Αλγόριθµοι και Πολυπλοκότητα 3- υναµικός

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 10: Ταξινόμηση Πίνακα Αναζήτηση σε Ταξινομημένο Πίνακα Πρόβλημα Δίνεται πίνακας t από Ν ακεραίους. Ζητούμενο: να ταξινομηθούν τα περιεχόμενα του πίνακα σε αύξουσα αριθμητική

Διαβάστε περισσότερα

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

Στοιχεία Αλγορίθµων και Πολυπλοκότητας Στοιχεία Αλγορίθµων και Πολυπλοκότητας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 1 / 16 «Ζέσταµα» Να γράψετε τις συναρτήσεις

Διαβάστε περισσότερα

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους Εισαγωγή στους Αλγορίθμους Ενότητα 5η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Η Μέθοδος «Διαίρει & Βασίλευε» Η Μέθοδος

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 04: ΠαραδείγματαΑνάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα -Γραμμική

Διαβάστε περισσότερα

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. Κεφάλαιο 4 Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Διαίρει και Βασίλευε (Divide-and-Conquer) Διαίρει-και-βασίλευε (γενικά) Χωρίζουµε

Διαβάστε περισσότερα

Εισαγωγή στην Ανάλυση Αλγορίθμων

Εισαγωγή στην Ανάλυση Αλγορίθμων Εισαγωγή στην Ανάλυση Αλγορίθμων (4) Μεθοδολογία αναδρομικών σχέσεων (Ι) Με επανάληψη της αναδρομής Έστω όπου r και a είναι σταθερές. Βρίσκουμε τη σχέση που εκφράζει την T(n) συναρτήσει της T(n-) την T(n)

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ ΤΟ ΠΡΟΒΛΗΜΑ ΤΗΣ ΤΑΞΙΝΟΜΗΣΗΣ Ορισμός ταξινόμησης 2 Κατηγορίες αλγορίθμων ταξινόμησης

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 28: O Αλγόριθμος Ταξινόμησης HeapSort Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Η διαδικασία PercolateDown, Δημιουργία Σωρού - O Αλγόριθμος Ταξινόμησης HeapSort - Υλοποίηση, Παραδείγματα

Διαβάστε περισσότερα

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 22: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης - Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου

Διαβάστε περισσότερα

Κατ οίκον Εργασία 1 Σκελετοί Λύσεων

Κατ οίκον Εργασία 1 Σκελετοί Λύσεων EΠΛ Αλγόριθµοι και Πολυπλοκότητα Φεβρουάριος 00 Κατ οίκον Εργασία Σκελετοί Λύσεων. Ο αλγόριθµος διαίρει και βασίλευε για το πρόβληµα έχει ως εξής: Μοίρασε τον πίνακα σε δύο µισά. Υπολόγισε αναδροµικά τα

Διαβάστε περισσότερα

ιαφάνειες παρουσίασης #4

ιαφάνειες παρουσίασης #4 ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

Διαβάστε περισσότερα

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

ΑΛΓΟΡΙΘΜΟΙ  Άνοιξη I. ΜΗΛΗΣ ΑΛΓΟΡΙΘΜΟΙ http://eclass.aueb.gr/courses/inf161/ Άνοιξη 2016 - I. ΜΗΛΗΣ ΠΑΡΑΔΕΙΓΜΑΤΑ ΑΛΓΟΡΙΘΜΩΝ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 1 Example: GCD συνάρτηση

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 13: Αλγόριθμοι-Μεγάλων ακεραίων- Εκθετοποίηση- Πολλαπλασιασμός πινάκων -Strassen Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Heapsort Using Multiple Heaps

Heapsort Using Multiple Heaps sort sort Using Multiple s. Λεβεντέας Χ. Ζαρολιάγκης Τµήµα Μηχανικών Η/Υ & Πληροφορικής 29 Αυγούστου 2008 sort 1 Ορισµός ify Build- 2 sort Πως δουλεύει Ιδιότητες 3 4 Προβλήµατα Προτάσεις Ανάλυση Κόστους

Διαβάστε περισσότερα

Ελάχιστα Γεννητορικά ένδρα

Ελάχιστα Γεννητορικά ένδρα λάχιστα Γεννητορικά ένδρα Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ο αλγόριθµος του Prim και ο αλγόριθµος του Kruskal για εύρεση λάχιστων Γεννητορικών ένδρων ΠΛ 23 οµές εδοµένων και Αλγόριθµοι

Διαβάστε περισσότερα

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης Ουρές Προτεραιότητας: Υπενθύμιση Σωροί / Αναδρομή / Ταξινόμηση Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς (Abstract Data Type) με μεθόδους: Μπορεί να υλοποιηθεί με

Διαβάστε περισσότερα