Ενότητα 2.1 Αλγόριθμοι Ταξινόμησης O(n 2 ) & O(nlogn) Σχεδίαση & Ανάλυση Αλγορίθμων
Αλγόριθμοι Ταξινόμησης Bubble-Sort Selection –Sort Insertion -Sort Quick -Sort Merge–Sort Heap–Sort Counting–Sort Bucket-Sort Radix-Sort Shell-sort
Αλγόριθμος Φυσαλίδας (Bubble-Sort) Το Min πάντα στη θέση i Αλγόριθμος Bubble-Sort
Αλγόριθμος Selection -Sort Αλγόριθμος Επιλογής (Selection-Sort) Το Min πάντα στη θέση i
Αλγόριθμος Selection -Sort
Αλγόριθμος Insertion -Sort Αλγόριθμος Παρεμβολής (Insertion-Sort)
Αλγόριθμος Insertion -Sort
Πρόβλημα Π Άνω Φράγμα του Π Κάτω Φράγμα του Π Βέλτιστος Αλγόριθμος Αλγόριθμος Θεώρημα Άνω και Κάτω φράγματα
Ο(n 2 ) Αλγόριθμος Bubble-Sort Ο(n 2 ) Αλγόριθμος Selection-Sort Ο(n 2 ) Αλγόριθμος Insertion-Sort Άνω Φράγμα Κάτω Φράγμα Άνω και Κάτω φράγματα Πρόβλημα Π Υπάρχει Ταχύτερος Αλγόριθμος !!!
Κάτω φράγματα – Πρόβλημα Ταξινόμηση Bubble-Sort Selection-Sort Insertion-Sort Κλάση Αλγορίθμων:
Κάτω φράγματα – Πρόβλημα Ταξινόμηση Bubble-Sort, Selection-Sort, Insertion-Sort
Κάτω φράγματα – Πρόβλημα Ταξινόμηση
Αλγόριθμοι Bubble-Sort Selection –Sort Insertion -Sort Quick -Sort Merge–Sort Heap–Sort Counting–Sort Bucket-Sort Radix-Sort Shell-sort
Διαίρει και Βασίλευε (Divide and Conquer ) Αλγόριθμοι:Quick-Sort & Merge-Sort Τεχνική: Divide and Conquer 1 2 3
Διαίρει και Βασίλευε (Divide and Conquer ) Σχεδιασμός Αλγόριθμου: Divide and Conquer >
Διαίρει και Βασίλευε (Divide and Conquer )
Divide and Conquer (σχηματικά…) πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους k
Διαίρει και Βασίλευε (Divide and Conquer ) πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους k επιλύουμε αναδρομικά τα υποπροβλήματα Divide and Conquer (σχηματικά…)
Διαίρει και Βασίλευε (Divide and Conquer ) πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους k επιλύουμε αναδρομικά τα υποπροβλήματα Divide and Conquer (σχηματικά…)
Διαίρει και Βασίλευε (Divide and Conquer ) πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους k επιλύουμε αναδρομικά τα υποπροβλήματα Divide and Conquer (σχηματικά…)
Διαίρει και Βασίλευε (Divide and Conquer ) πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους k επιλύουμε αναδρομικά τα υποπροβλήματα Divide and Conquer (σχηματικά…)
Διαίρει και Βασίλευε (Divide and Conquer ) πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους k επιλύουμε αναδρομικά τα υποπροβλήματα Divide and Conquer (σχηματικά…)
Διαίρει και Βασίλευε (Divide and Conquer ) διάσπαση προβλήματος & σύνθεση λύσεων Χρόνος εκτέλεσης : χρόνος διάσπασης χρόνος σύνθεσης επιλύουμε αναδρομικά τα υποπροβλήματα πρόβλημα μεγέθους Ν πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους k Divide and Conquer (σχηματικά…)
Διαίρει και Βασίλευε (Divide and Conquer )
Αλγόριθμος Quick -Sort
k = n-1, n-2, …, 2. Quick-Sort (1, 0) Quick-Sort (2, n) n n
Αλγόριθμος Quick -Sort
Ισομερής Προσέγγιση
Αλγόριθμος Quick -Sort
Γενική Προσέγγιση
Αλγόριθμος Quick -Sort
Αλγόριθμος Merge -Sort
Συγχώνευση (Merge) Συγχώνευση δύο διατεταγμένων ακολουθιών
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) ij Συγχώνευση δύο διατεταγμένων ακολουθιών
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) ij 2 2 Συγχώνευση δύο διατεταγμένων ακολουθιών
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) ij 24 2 Συγχώνευση δύο διατεταγμένων ακολουθιών
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) ij Συγχώνευση δύο διατεταγμένων ακολουθιών
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) ij Συγχώνευση δύο διατεταγμένων ακολουθιών
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) ij Συγχώνευση δύο διατεταγμένων ακολουθιών
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) ij Συγχώνευση δύο διατεταγμένων ακολουθιών
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) ij … … Συγχώνευση δύο διατεταγμένων ακολουθιών
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) ij Συγχώνευση δύο διατεταγμένων ακολουθιών
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) ij Συγχώνευση δύο διατεταγμένων ακολουθιών
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) ij Απαιτεί 3 ξεχωριστούς πίνακες Συγχώνευση δύο διατεταγμένων ακολουθιών
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) lmm+1r a lm r aux Συγχώνευση δύο διατεταγμένων ακολουθιών με 2 πίνακες
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) lmm+1r a lmm+1r aux Συγχώνευση δύο διατεταγμένων ακολουθιών με 2 πίνακες
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) lmm+1r a lmm+1r aux αντιστροφή της 2 ης ακολουθίας Συγχώνευση δύο διατεταγμένων ακολουθιών με 2 πίνακες
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) lmm+1r a lmm+1r aux Συγχώνευση δύο διατεταγμένων ακολουθιών με 2 πίνακες
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) lmm+1r a lmm+1r aux Συγχώνευση δύο διατεταγμένων ακολουθιών με 2 πίνακες
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) lmm+1r a lmm+1r aux Συγχώνευση δύο διατεταγμένων ακολουθιών με 2 πίνακες
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) lmm+1r a lmm+1r aux … … … Συγχώνευση δύο διατεταγμένων ακολουθιών με 2 πίνακες
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) lmm+1r a lmm+1r aux Συγχώνευση δύο διατεταγμένων ακολουθιών με 2 πίνακες
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) lmm+1r a lmm+1r aux Συγχώνευση δύο διατεταγμένων ακολουθιών με 2 πίνακες
Αλγόριθμος Merge -Sort Συγχώνευση (Merge) lmm+1r a lmm+1r aux Συγχώνευση δύο διατεταγμένων ακολουθιών με 2 πίνακες
Αλγόριθμος Merge -Sort Σύγκριση δύο στοιχείων
Αλγόριθμος Merge -Sort
Σύγκριση δύο στοιχείων O(n logn)
Κάτω Φράγματα
a[i]<a[j] ? a[b]<a[c] ? a[f]<a[g] ? a[h]<a[i] ? a[d]<a[e] ? a[j]<a[k] ? a[l]<a[m] ? Δένδρο απόφασης Κάτω φράγμα για ταξινόμηση που χρησιμοποιεί μόνο συγκρίσεις
Κάτω Φράγματα Δένδρο απόφασης Π.χ. για n=3 a[1]<a[2] ? a[1]<a[3] ? a[2]<a[3] ? a[1]<a[3] ? a[2]<a[3] ? a[1]< a[2]< a[3] a[1]< a[3]< a[2] a[3]< a[1]< a[2] a[2]< a[1]< a[3] a[2]< a[3]< a[1] a[3]< a[2]< a[1] Κάτω φράγμα για ταξινόμηση που χρησιμοποιεί μόνο συγκρίσεις
Κάτω Φράγματα Δένδρο απόφασης Π.χ. για n=3 a[1]<a[2] ? a[1]<a[3] ? a[2]<a[3] ? a[1]<a[3] ? a[2]<a[3] ? a[1]< a[2]< a[3] a[1]< a[3]< a[2] a[3]< a[1]< a[2] a[2]< a[1]< a[3] a[2]< a[3]< a[1] a[3]< a[2]< a[1] Για a=[1,2,3] Η εκτέλεση του αλγόριθμου ακολουθεί ένα μονοπάτι από τη ρίζα προς κάποιο φύλλο Κάτω φράγμα για ταξινόμηση που χρησιμοποιεί μόνο συγκρίσεις
Κάτω Φράγματα Δένδρο απόφασης Π.χ. για n=3 Για a=[2,1,3] a[1]<a[2] ? a[1]<a[3] ? a[2]<a[3] ? a[1]<a[3] ? a[2]<a[3] ? a[1]< a[2]< a[3] a[1]< a[3]< a[2] a[3]< a[1]< a[2] a[2]< a[1]< a[3] a[2]< a[3]< a[1] a[3]< a[2]< a[1] Η εκτέλεση του αλγόριθμου ακολουθεί ένα μονοπάτι από τη ρίζα προς κάποιο φύλλο Κάτω φράγμα για ταξινόμηση που χρησιμοποιεί μόνο συγκρίσεις
Κάτω Φράγματα a[i]<a[j] ? a[b]<a[c] ? a[f]<a[g] ? a[h]<a[i] ? a[d]<a[e] ? a[j]<a[k] ? a[l]<a[m] ? Δένδρο απόφασης Ο αριθμός των συγκρίσεων που πραγματοποιεί μια εκτέλεση του αλγόριθμου στη χειρότερη περίπτωση είναι ίσος με το ύψος του δένδρου Κάθε μετάθεση της ακολουθίας εισόδου αντιστοιχεί σε διαφορετικό φύλλο υπάρχουν n! φύλλα Ύψος δυαδικού δένδρου με n! φύλλα = Κάτω φράγμα για ταξινόμηση που χρησιμοποιεί μόνο συγκρίσεις
Κάτω Φράγματα
Σύγκριση δύο στοιχείων O(n logn)
Κάτω Φράγματα ??? Ενότητα Αλγόριθμοι Ταξινόμησης O(n 2 ) & O(nlogn)