Σεδίαση και Ανάλση...
TRANSCRIPT
![Page 1: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/1.jpg)
Σχεδίαση και Ανάλυση Αλγορίθμων
Ενότητα 5.0
Ταξινόμηση Selection-Sort
Bubble-Sort και Insertion-Sort
Quick-Sort, Merge-Sort και Heap-Sort
Counting-Sort και Radix-Sort
Shell-Sort
Σταύρος Δ. Νικολόπουλος | 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros
![Page 2: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/2.jpg)
Αλγόριθμοι Ταξινόμησης
Selection-Sort
Bubble-Sort Insertion -Sort
Quick -Sort Merge–Sort
Heap–Sort Counting–Sort Bucket-Sort Radix-Sort
Shell-sort
![Page 3: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/3.jpg)
Αλγόριθμοι Ταξινόμησης
Selection-Sort
Bubble-Sort Insertion -Sort
Quick -Sort Merge–Sort
Heap–Sort Counting–Sort Bucket-Sort Radix-Sort
Shell-sort
![Page 4: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/4.jpg)
Ταξινόμηση
Ορισμός Προβλήματος
Το Πρόβλημα της Ταξινόμησης
Είσοδος : ακολουθία n στοιχείων S = (α1, α2, ..., αn).
Έξοδος : αναδιάταξη (α’1, α’2, ..., α’n) των στοιχείων της S
σε αύξουσα τάξη (∀i, 1 i n-1, α’i ≤ α’i+1).
Θεμελιώδες αλγοριθμικό πρόβλημα
Πολλές εφαρμογές (~20-25% του υπολογιστικού χρόνου).
Ταχύτατη αναζήτηση σε ταξινομημένα δεδομένα.
Σημαντικές αλγοριθμικές ιδέες και τεχνικές !!!
![Page 5: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/5.jpg)
Ταξινόμηση
Το Πρόβλημα της Ταξινόμησης
Ο αλγόριθμος ταξινόμησης που διατηρεί η σχετική σειρά των στοιχείων με ίσες τιμές.
Δηλαδή, ένας αλγόριθμος ταξινόμησης είναι ευσταθής εάν για οποιαδήποτε δύο στοιχεία x και y με την ίδια τιμή ισχύει ότι το x βρίσκεται πριν το y στην αρχική ακολουθία S, να ισχύει ότι το x βρίσκεται πριν το y στην ταξινομημένη ακολουθία S’ !!!
Ευσταθής Ταξινόμηση Μη-ευσταθής Ταξινόμηση
Ευσταθής Αλγόριθμος Ταξινόμησης
![Page 6: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/6.jpg)
Selection-Sort
Αλγόριθμος Selection-sort Επιλογής
swap
Min
Min (no swap)
Sorted
![Page 7: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/7.jpg)
…
Ταξινομημένο Τμήμα
x = min(S[i,n])
1 2 i-1 i n
x Το min της ακολουθίας S[i,n] στη θέση i (και το S[i] στη θέση του min).
Αλγόριθμος Selection-Sort
Αλγόριθμος Selection-sort (Επιλογής)
Ιδέα Αλγόριθμου !!!
Quick-Select(S[1,n], i)
Quick-Select(S[i,n], 1)
or
Το i-th τάξης στοιχείο της ακολουθίας S[1,n] στη θέση i, 1 ≤ i ≤ n.
Ονομάζεται και Min-Sort (ή Max-Sort)
![Page 8: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/8.jpg)
Algorithm Selection-sort
begin
for i ← 1 to n-1 do
min ← S[i]; pos ← i
for j ← i+1 to n do
if S[j] < min then
min ← S[j]; pos ←j
end
end
Swap(S[i], S[pos])
end
return S
end
…
Ταξινομημένο Τμήμα
x = min(S[i,n])
1 2 i-1 i n
x
…
Ταξινομημένο Τμήμα
S[i+1,n])
1 2 i-1 i n
x
Αλγόριθμος Selection-Sort
Βρες το min στοιχείο S[pos] στην ακολουθία
S[i,n]
και αντάλλαξέ το με το στοιχείο
S[i] x
Quick-Select(S[1,n], i)
x = Min(S[i,n])
or
Αλγόριθμος Selection-sort (Επιλογής)
Ονομάζεται και Min-Sort (ή Max-Sort) Το min της ακολουθίας S[i,n] στη θέση i
![Page 9: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/9.jpg)
Algorithm Selection-sort
begin
for i ← 1 to n-1 do
min ← S[i]; pos ← i
for j ← i+1 to n do
if S[j] < min then
min ← S[j]; pos ←j
end
end
Swap(S[i], S[pos])
end
return S
end
…
Ταξινομημένο Τμήμα
x = min(S[i,n])
1 2 i-1 i n
x
Αλγόριθμος Selection-Sort
Αλγόριθμος Selection-sort (Επιλογής)
Ονομάζεται και Min-Sort (ή Max-Sort) Το min της ακολουθίας S[i,n] στη θέση i
Βρες το x = min στοιχείο στην υποακολουθία
S[i,n]
και αντάλλαξέ το με το στοιχείο
S[i] x …
Ταξινομημένο Τμήμα
S[i+1,n])
1 2 i-1 i n
x
![Page 10: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/10.jpg)
…
Ταξινομημένο Τμήμα
1 2 i-1 i n
x
min
j
Ορθότητα Πολυπλοκότητα
Αλγόριθμος Selection-Sort
Algorithm Selection-sort
begin
for i ← 1 to n-1 do
min ← S[i]; pos ← i
for j ← i+1 to n do
if S[j] < min then
min ← S[j]; pos ← j
end
end
Swap(S[i], S[pos])
end
return S
end
Αλγόριθμος Selection-sort (Επιλογής)
Το min της ακολουθίας S[i,n] στη θέση i Ονομάζεται και Min-Sort (ή Max-Sort)
![Page 11: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/11.jpg)
Bubble-Sort & Insertion-Sort
Αλγόριθμοι Bubble-Sort & Insertion-Sort Φυσαλίδας και Παρεμβολής
![Page 12: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/12.jpg)
Αλγόριθμος Bubble-Sort
…
Ταξινομημένο Τμήμα
1 2 i-1 i i+1 n
x
min j
Αλγόριθμος Bubble-Sort (Φυσαλίδας)
Algorithm Bubble-sort
begin
for i ← 1 to n-1 do
for j ← n downto i+1 do
if S[j] < S[j-1] then
Swap(S[j], S[j-1])
end
end
return S
end
Σύγκριση και
και ανταλλαγή εάν χρειάζεται
S[j] S[j-1]
Το min της ακολουθίας S[i,n] στη θέση i
![Page 13: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/13.jpg)
Αλγόριθμος Bubble-Sort
…
Ταξινομημένο Τμήμα
1 2 i-1 i i+1 n
x
min j
Το min της ακολουθίας S[i,n] στη θέση i
Ορθότητα Πολυπλοκότητα
Algorithm Bubble-sort
begin
for i ← 1 to n-1 do
for j ← n downto i+1 do
if S[j] < S[j-1] then
Swap(S[j], S[j-1])
end
end
return S
end
Αλγόριθμος Bubble-Sort (Φυσαλίδας)
![Page 14: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/14.jpg)
Αλγόριθμος Insertion-Sort
x …
Ταξινομημένο Τμήμα
Μη-ταξινομημένο Τμήμα
1 2 i-1 i n
Αλγόριθμος Insertion-Sort (Παρεμβολής)
Algorithm Insertion-sort
begin
for i ← 2 to n do
x ← S[i];
j ← i-1
while j 1 and x < S[j] do
S[j+1] ← S[j]
j ← j-1
end
S[j+1] ← x
end
return S
end
Εισαγωγή του στοιχείου x της υποακολουθίας S[i+1,n]
στην “σωστή” του θέση
στην υποακολουθία S[1,i]
Ονομάζεται και Αλγόριθμος Εισαγωγής
![Page 15: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/15.jpg)
Αλγόριθμος Insertion-Sort
Ορθότητα Πολυπλοκότητα
Algorithm Insertion-sort
begin
for i ← 2 to n do
x ← S[i];
j ← i-1
while j 1 and x < S[j] do
Swap(x, S[j])
j ← j-1
end
S[j+1] ← x
end
return S
end
Αλγόριθμος Insertion-Sort (Παρεμβολής)
x …
Ταξινομημένο Τμήμα
Μη-ταξινομημένο Τμήμα
1 2 i-1 i n
Μια πρώτη υλοποίηση του Insertion-Sort !
![Page 16: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/16.jpg)
Αλγόριθμος Insertion-Sort
Ορθότητα Πολυπλοκότητα
Algorithm Insertion-sort
begin
for i ← 2 to n do
x ← S[i];
j ← i-1
while j 1 and x < S[j] do
S[j+1] ← S[j]
j ← j-1
end
S[j+1] ← x
end
return S
end
Αλγόριθμος Insertion-Sort (Παρεμβολής)
x …
Ταξινομημένο Τμήμα
Μη-ταξινομημένο Τμήμα
1 2 i-1 i n
Μια καλύτερη υλοποίηση του Insertion-Sort !!!
![Page 17: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/17.jpg)
Αλγόριθμος Insertion-Sort
Ορθότητα Insertion-sort
Algorithm Insertion-sort
begin
for i ← 2 to n do
εντολές end
return S
end
Κατά την έναρξη κάθε επανάληψη του εξωτερικού βρόχου (for), η υποακολουθία με στοιχεία από την θέση 1 έως την i, δηλ. S[1,i], αποτελείται από τα ίδια στοιχεία που υπήρχαν αρχικά στην S
στις θέσεις 1 έως i, αλλά ταξινομημένα (κάθε στοιχείο είναι μεγαλύτερο από όλα τα αριστερά του).
Για τον αλγόριθμο Insertion-sort θεωρούμε την παρακάτω αναλλοίωτη συνθήκη επανάληψης:
Θα αποδείξουμε ότι η παραπάνω πρόταση αποτελεί αναλλοίωτη συνθήκη επανάληψης :
Αρχικοποίηση - Η υποακολουθία S[1,1] που αποτελείται από το πρώτο στοιχείο είναι ταξινομημένη.
Διατήρηση - Κάθε επανάληψη του βρόχου επεκτείνει την υποακολουθία S[1,i] διατηρώντας αναλλοίωτη την συνθήκη επανάληψης. Πράγματι, όταν το στοιχείο x εισάγεται στην S[1,i] είναι μεγαλύτερο από το στοιχείο y στα αριστερά του. Δεδομένου ότι τα στοιχεία στα αριστερά του y έχουν ήδη ταξινομηθεί, συνεπάγεται ότι το x είναι μεγαλύτερο από όλα τα στοιχεία αριστερά του. Άρα, η υποακολουθία S[1,i] παραμένει ταξινομημένη.
Τερματισμός - Ο αλγόριθμος τερματίζει όταν το i = n, που σημαίνει ότι η ταξινομημένη υποακολουθία S[1,i] έχει επεκταθεί και τώρα είναι η S[1,n]. Άρα, η ακολουθία S είναι τώρα πλήρως ταξινομημένη.
Αλγόριθμος Insertion-Sort (Παρεμβολής)
![Page 18: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/18.jpg)
Αλγόριθμος Insertion-Sort
Απλός (simple): Είναι απλός στην εφαρμογή του.
Αποτελεσματικός (efficient): Για μικρά σύνολα δεδομένων.
Αποδοτικός (efficient in practice): Πιο αποτελεσματικός στην πράξη από άλλους απλούς αλγορίθμους O(n2) (selection-Sort ή bubble-Sort), όπου στην «καλή» περίπτωση (σχεδόν ταξινομημένα τα στοιχεία κατά την είσοδο) ο χρόνος εκτέλεσης είναι Ο(n).
Σταθερός (stable): Δεν αλλάζει τη σχετική σειρά των στοιχείων που έχουν ίσα κλειδιά.
Σε ίδιο χώρο (in-place): Απαιτεί μόνο μια σταθερή ποσότητα O(1) επιπλέον χώρο μνήμης.
Άμεσος (on-line): Μπορεί να ταξινομήσει μια ακολουθία καθώς τη λαμβάνει !!!
Αλγόριθμος Insertion-Sort (Παρεμβολής)
Χαρακτηριστικά Αλγόριθμου
![Page 19: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/19.jpg)
Bubble-Sort & Insertion-Sort
Συμπεριφορά Bubble-Sort & Insertion-Sort
Κλάση Αλγορίθμων: Μετά από κάθε σύγκριση δύο στοιχείων:
Κανένα στοιχείο δεν μετακινείται
Ανταλλάσουν θέσεις
Όλοι οι αλγόριθμοι ταξινόμησης που εκτελούν τέτοιες «περιορισμένες» και
«τοπικές» ανταλλαγές στοιχείων συμπεριφέρονται το ίδιο με τους αλγορίθμους
Bubble-Sort και Insertion-Sort
![Page 20: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/20.jpg)
Συμπεριφορά Bubble-Sort & Insertion-Sort
Έστω μια μετάθεση A = (a1, a2, …, an) του συνόλου Nn = {1, 2, …, n}.
Ένα ζεύγος στοιχείων (ak, am) της μετάθεσης A ονομάζεται αντιστροφή (inversion) εάν για τις θέσεις τους ισχύει k < m και για τις τιμές του ak > am.
k < m
ak > am
Το ζεύγος (3, 1) είναι μια αντιστροφή
Bubble-Sort & Insertion-Sort
![Page 21: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/21.jpg)
Συμπεριφορά Bubble-Sort & Insertion-Sort
Έστω μια μετάθεση A = (a1, a2, …, an) του συνόλου Nn = {1, 2, …, n}.
Ένα ζεύγος στοιχείων (ak, am) της μετάθεσης A ονομάζεται αντιστροφή (inversion) εάν για τις θέσεις τους ισχύει k < m και για τις τιμές του ak > am.
Bubble-Sort & Insertion-Sort
5 αντιστροφές 8 αντιστροφές
![Page 22: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/22.jpg)
Συμπεριφορά Bubble-Sort & Insertion-Sort
Οποιοσδήποτε αλγόριθμος ταξινόμησης (όπως οι Bubble-Sort και Insertion-Sort) που εκτελεί «περιορισμένες» και «τοπικές» ανταλλαγές στοιχείων
Επομένως, το πλήθος των συγκρίσεων σε μια είσοδο A = (a1, a2, …, an) είναι τουλάχιστον ίση με το πλήθος των αντιστροφών στη μετάθεση A !!!
Πρόταση: Μια μετάθεση A = (a1, a2, …, an) μήκους n έχει το πολύ πλήθος αντιστροφών.
Με κάθε σύγκριση «διορθώνει» το πολύ μία αντιστροφή !!!
Bubble-Sort & Insertion-Sort
![Page 23: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/23.jpg)
Συμπεριφορά Bubble-Sort & Insertion-Sort
Οποιοσδήποτε αλγόριθμος ταξινόμησης (όπως οι Bubble-Sort και Insertion-Sort) που εκτελεί «περιορισμένες» και «τοπικές» ανταλλαγές στοιχείων
Με κάθε σύγκριση «διορθώνει» το πολύ μία αντιστροφή !!!
Bubble-Sort & Insertion-Sort
![Page 24: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/24.jpg)
Bubble-Sort
Insertion-Sort
4000 3000 2000 1000
40 60 80 100
Selection, Bubble-Sort & Insertion-Sort
Σύγκριση Αλγορίθμων Ταξινόμησης
![Page 25: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/25.jpg)
Selection, Bubble-Sort & Insertion-Sort
Bubble-Sort
Selection-Sort
Insertion-Sort
Σύγκριση Αλγορίθμων Ταξινόμησης
![Page 26: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/26.jpg)
Αλγόριθμοι Ταξινόμησης
Selection-Sort
Bubble-Sort Insertion -Sort
Quick -Sort Merge–Sort
Heap–Sort
Counting–Sort Bucket-Sort Radix-Sort
Shell-sort
![Page 27: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/27.jpg)
Αλγόριθμοι Ταξινόμησης
Αλγόριθμοι Quick-sort και Merge-sort
![Page 28: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/28.jpg)
Αλγόριθμοι Ταξινόμησης
Αλγόριθμοι Quick-sort και Merge-sort
Quick-sort Διαμέριση σε “μικρότερα – pivot – μεγαλύτερα”
Merge-sort Συγχώνευση ταξινομημένων ακολουθιών
![Page 29: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/29.jpg)
Αλγόριθμος Quick-Sort
Τεχνική Διαίρει-και-Βασίλευε
Δύσκολη διαίρεση - Εύκολη συνένωση
Υπο-προβλήματα Διαφορετικού μήκους
Χειρίστη Πολυπλοκότητα O(n2)
Μέση Πολυπλοκότητα O(nlogn)
Αλγόριθμος Ταξινόμησης Quick-Sort
![Page 30: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/30.jpg)
Αλγόριθμος Quick-Sort
< x x
< x x x
sp i
x
sp
Ενδιάμεσο
βήμα i-στης επανάληψης
Τελικό
βήμα i-στης επανάληψης
Αλγόριθμος Quick-Sort
x
pivot
Αρχικό
βήμα i-στης επανάληψης
Ιδέα Αλγόριθμου !!!
Διάσπαση
Εφαρμογή της διαδικασίας
split
1o τμήμα 2o τμήμα
![Page 31: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/31.jpg)
Αλγόριθμος Merge-Sort
Αλγόριθμος Ταξινόμησης Merge-Sort
Τεχνική Διαίρει-και-Βασίλευε
Εύκολη διαίρεση – Δύσκολη συνένωση
Υπο-προβλήματα Ίδιου μήκους
Χειρίστη Πολυπλοκότητα O(nlogn)
Μέση Πολυπλοκότητα O(nlogn)
![Page 32: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/32.jpg)
∆ιαίρεση ακολουθίας εισόδου μήκους n σε δύο υποακολουθίες μήκους n/2.
Ταξινόμηση �των δύο υποακολουθιών (μισού μεγέθους) αναδρομικά.
�Συγχώνευση των δύο ταξινομημένων υποακολουθιών σε μία ταξινομημένη ακολουθία.
Αλγόριθμος Merge-Sort
Αλγόριθμος Merge-Sort
Ιδέα Αλγόριθμου !!!
∆ιαίρεσε
Ταξινόμησε
Συγχώνευσε
1
2
3
(divide)
(conquer)
(combine)
![Page 33: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/33.jpg)
Αλγόριθμος Quick-Sort
Ευστάθεια Αλγορίθμων Quick-Sort και Marge-Sort
Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
< x x x
x
split
Algorithm Merge-Sort(A, left, right)
begin
if (left right) return
mid = (left + right) / 2
Merge-Sort(A, left, mid)
Merge-Sort(A, mid+1, right)
Merge(A, left, mid, right)
end
Algorithm Merge()
i ← j ← 1
while (A B )
if (ai ≤ bj) προσάρτηση ai στη C και i ← i+1
else{ai > bj}προσάρτηση bj στη C και j ← j+1
end
προσάρτηση των υπόλοιπων στοιχείων της
μη-άδειας ακολουθίας A ή B στη C
end
![Page 34: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/34.jpg)
5 1 4 6 8 8 S
aux
Αλγόριθμος Quick-Sort
pivot = 5
Ευστάθεια Quick-Sort
Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
< x x x
x
split
j i
![Page 35: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/35.jpg)
5 1 4 6 8 8
Αλγόριθμος Quick-Sort
pivot = 5 Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
< x x x
x
split
Ευστάθεια Quick-Sort
S
aux
j i
![Page 36: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/36.jpg)
5 1 4 6 8 8
1
Αλγόριθμος Quick-Sort
pivot = 5 Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
< x x x
x
split
Ευστάθεια Quick-Sort
S
aux
j i
![Page 37: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/37.jpg)
5 1 4 6 8 8
1 4
Αλγόριθμος Quick-Sort
pivot = 5 Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
< x x x
x
split
Ευστάθεια Quick-Sort
S
aux
j i
![Page 38: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/38.jpg)
5 1 4 6 8 8
1 4 8
Αλγόριθμος Quick-Sort
pivot = 5 Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
< x x x
x
split
Ευστάθεια Quick-Sort
S
aux
j i
![Page 39: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/39.jpg)
5 1 4 6 8 8
1 4 8 8
j i
Αλγόριθμος Quick-Sort
pivot = 5 Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
< x x x
x
split
Ευστάθεια Quick-Sort
S
aux
Μη-ευσταθής Αλγόριθμος
![Page 40: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/40.jpg)
5 1 4 6 8 8
1 4 2 8 8
Αλγόριθμος Quick-Sort
pivot = 5 Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
< x x x
x
split
Ευστάθεια Quick-Sort
S
aux
j i
Μη-ευσταθής Αλγόριθμος
![Page 41: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/41.jpg)
5 1 4 6 8 8
1 4 2 5 8 8
Αλγόριθμος Quick-Sort
pivot = 5 Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
< x x x
x
split
Ευστάθεια Quick-Sort
S
aux
j i
Μη-ευσταθής Αλγόριθμος
![Page 42: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/42.jpg)
5 1 4 6 8 8
Αλγόριθμος Quick-Sort
pivot = 5 Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
< x x x
x
split
Ευστάθεια Quick-Sort
S
2 1 4 8 8 5
Μη-ευσταθής Αλγόριθμος
![Page 43: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/43.jpg)
5 1 5 6 5 2
Αλγόριθμος Quick-Sort
pivot = 5
sp : splitpt
Ευστάθεια Quick-Sort (in-place)
Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
split
sp
S
i
Split : επί τόπου διάσπαση
![Page 44: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/44.jpg)
5 1 5 6 5 2
Αλγόριθμος Quick-Sort
pivot = 5
sp : splitpt
Ευστάθεια Quick-Sort (in-place)
Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
split
sp
5 5 5
S
i
Split : επί τόπου διάσπαση
![Page 45: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/45.jpg)
5 1 5 6 5 2
sp
Αλγόριθμος Quick-Sort
pivot = 5
Ευστάθεια Quick-Sort (in-place)
Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
split
5 5 5
S
i
Split : επί τόπου διάσπαση
![Page 46: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/46.jpg)
5 1 5 6 5 2
sp
Αλγόριθμος Quick-Sort
pivot = 5
Ευστάθεια Quick-Sort (in-place)
Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
split
5 5 5
S
i
Split : επί τόπου διάσπαση
![Page 47: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/47.jpg)
5 1 5 6 5 2
Αλγόριθμος Quick-Sort
pivot = 5
Ευστάθεια Quick-Sort (in-place)
Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
split
sp
5 5 5
S
i
Split : επί τόπου διάσπαση
![Page 48: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/48.jpg)
5 1 5 6 5 2
Αλγόριθμος Quick-Sort
pivot = 5
Ευστάθεια Quick-Sort (in-place)
Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
split
sp
5 5 5
S
i
Split : επί τόπου διάσπαση
![Page 49: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/49.jpg)
5 1 5 6 5 2
Αλγόριθμος Quick-Sort
pivot = 5
Ευστάθεια Quick-Sort (in-place)
Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
split
sp
5 5 5
S
i
Split : επί τόπου διάσπαση
![Page 50: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/50.jpg)
5 1 5 6 5 2
Αλγόριθμος Quick-Sort
sp
pivot = 5
Ευστάθεια Quick-Sort (in-place)
Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
split
5 5 5
S
i
Split : επί τόπου διάσπαση
![Page 51: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/51.jpg)
5 1 2 6 5 5
Αλγόριθμος Quick-Sort
sp
pivot = 5
Ευστάθεια Quick-Sort (in-place)
Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
split
5 5 5
S
i
Split : επί τόπου διάσπαση
Μη-ευσταθής Αλγόριθμος
![Page 52: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/52.jpg)
5 1 2 6 5 5
Αλγόριθμος Quick-Sort
sp
pivot = 5
Ευστάθεια Quick-Sort (in-place)
Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
split
5 5 5
S
i
Split : επί τόπου διάσπαση
Μη-ευσταθής Αλγόριθμος
![Page 53: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/53.jpg)
2 1 5 6 5 5
Αλγόριθμος Quick-Sort
pivot = 5
Ευστάθεια Quick-Sort (in-place)
Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
split
sp
5 5 5
S
Split : επί τόπου διάσπαση
Μη-ευσταθής Αλγόριθμος
![Page 54: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/54.jpg)
2 1 5 6 5 5
Αλγόριθμος Quick-Sort
pivot = 5
Ευστάθεια Quick-Sort (in-place)
Algorithm Quick-Sort(S, first, last)
begin
(1)if first < last then
pivot ← S[first]
splitpt ← first
for i ← first+1 to last do
if S[i] < pivot then
splitpt ← splitpt + 1
Swap(S[splitpt], S[i])
end;
end;
Swap (S[first], S[splitpt])
end
(2) Quick-Sort(S, first, splitpt-1)
(3) Quick-Sort(S, splitpt+1, last)
return S
end
split
Split : επί τόπου διάσπαση
Μη-ευσταθής Αλγόριθμος
5 5 5
S
2 1 5 6 5 5
![Page 55: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/55.jpg)
Αλγόριθμος Quick-Sort
Ευστάθεια Merge-Sort
Algorithm Merge-Sort(A, left, right)
begin
if (left right) return
mid = (left + right) / 2
Merge-Sort(A, left, mid)
Merge-Sort(A, mid+1, right)
Merge(A, left, mid, right)
end
Algorithm Merge()
i ← j ← 1
while (A B )
if (ai ≤ bj) προσάρτηση ai στη C και i ← i+1
else{ai > bj}προσάρτηση bj στη C και j ← j+1
end
προσάρτηση των υπόλοιπων στοιχείων της
μη-άδειας ακολουθίας A ή B στη C
end
1 2 2 6 2 2 4 8
j i
2 6 2 1 4 2 8 2 A
C
![Page 56: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/56.jpg)
Αλγόριθμος Quick-Sort
Ευστάθεια Merge-Sort
Algorithm Merge-Sort(A, left, right)
begin
if (left right) return
mid = (left + right) / 2
Merge-Sort(A, left, mid)
Merge-Sort(A, mid+1, right)
Merge(A, left, mid, right)
end
Algorithm Merge()
i ← j ← 1
while (A B )
if (ai ≤ bj) προσάρτηση ai στη C και i ← i+1
else{ai > bj}προσάρτηση bj στη C και j ← j+1
end
προσάρτηση των υπόλοιπων στοιχείων της
μη-άδειας ακολουθίας A ή B στη C
end
1 2 2 6 2 2 4 8
j i
2 6 2 1 4 2 8 2 A
1 C
![Page 57: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/57.jpg)
Αλγόριθμος Quick-Sort
Ευστάθεια Merge-Sort
Algorithm Merge-Sort(A, left, right)
begin
if (left right) return
mid = (left + right) / 2
Merge-Sort(A, left, mid)
Merge-Sort(A, mid+1, right)
Merge(A, left, mid, right)
end
Algorithm Merge()
i ← j ← 1
while (A B )
if (ai ≤ bj) προσάρτηση ai στη C και i ← i+1
else{ai > bj}προσάρτηση bj στη C και j ← j+1
end
προσάρτηση των υπόλοιπων στοιχείων της
μη-άδειας ακολουθίας A ή B στη C
end
1 2 2 6 2 2 4 8
j i
2 6 2 1 4 2 8 2 A
1 2 C
![Page 58: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/58.jpg)
Αλγόριθμος Quick-Sort
Ευστάθεια Merge-Sort
Algorithm Merge-Sort(A, left, right)
begin
if (left right) return
mid = (left + right) / 2
Merge-Sort(A, left, mid)
Merge-Sort(A, mid+1, right)
Merge(A, left, mid, right)
end
Algorithm Merge()
i ← j ← 1
while (A B )
if (ai ≤ bj) προσάρτηση ai στη C και i ← i+1
else{ai > bj}προσάρτηση bj στη C και j ← j+1
end
προσάρτηση των υπόλοιπων στοιχείων της
μη-άδειας ακολουθίας A ή B στη C
end
1 2 2 6 2 2 4 8
j i
2 6 2 1 4 2 8 2 A
1 2 2 C
![Page 59: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/59.jpg)
Αλγόριθμος Quick-Sort
Ευστάθεια Merge-Sort
Algorithm Merge-Sort(A, left, right)
begin
if (left right) return
mid = (left + right) / 2
Merge-Sort(A, left, mid)
Merge-Sort(A, mid+1, right)
Merge(A, left, mid, right)
end
Algorithm Merge()
i ← j ← 1
while (A B )
if (ai ≤ bj) προσάρτηση ai στη C και i ← i+1
else{ai > bj}προσάρτηση bj στη C και j ← j+1
end
προσάρτηση των υπόλοιπων στοιχείων της
μη-άδειας ακολουθίας A ή B στη C
end
1 2 2 6 2 2 4 8
j i
2 6 2 1 4 2 8 2 A
1 2 2 2 C
![Page 60: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/60.jpg)
Αλγόριθμος Quick-Sort
Ευστάθεια Merge-Sort
Algorithm Merge-Sort(A, left, right)
begin
if (left right) return
mid = (left + right) / 2
Merge-Sort(A, left, mid)
Merge-Sort(A, mid+1, right)
Merge(A, left, mid, right)
end
Algorithm Merge()
i ← j ← 1
while (A B )
if (ai ≤ bj) προσάρτηση ai στη C και i ← i+1
else{ai > bj}προσάρτηση bj στη C και j ← j+1
end
προσάρτηση των υπόλοιπων στοιχείων της
μη-άδειας ακολουθίας A ή B στη C
end
1 2 2 6 2 2 4 8
j i
2 6 2 1 4 2 8 2 A
1 2 2 2 2 C
![Page 61: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/61.jpg)
Αλγόριθμος Quick-Sort
Ευστάθεια Merge-Sort
Algorithm Merge-Sort(A, left, right)
begin
if (left right) return
mid = (left + right) / 2
Merge-Sort(A, left, mid)
Merge-Sort(A, mid+1, right)
Merge(A, left, mid, right)
end
Algorithm Merge()
i ← j ← 1
while (A B )
if (ai ≤ bj) προσάρτηση ai στη C και i ← i+1
else{ai > bj}προσάρτηση bj στη C και j ← j+1
end
προσάρτηση των υπόλοιπων στοιχείων της
μη-άδειας ακολουθίας A ή B στη C
end
1 2 2 6 2 2 4 8
j i
2 6 2 1 4 2 8 2 A
1 2 2 2 2 4 C
![Page 62: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/62.jpg)
Αλγόριθμος Quick-Sort
Ευστάθεια Merge-Sort
Algorithm Merge-Sort(A, left, right)
begin
if (left right) return
mid = (left + right) / 2
Merge-Sort(A, left, mid)
Merge-Sort(A, mid+1, right)
Merge(A, left, mid, right)
end
Algorithm Merge()
i ← j ← 1
while (A B )
if (ai ≤ bj) προσάρτηση ai στη C και i ← i+1
else{ai > bj}προσάρτηση bj στη C και j ← j+1
end
προσάρτηση των υπόλοιπων στοιχείων της
μη-άδειας ακολουθίας A ή B στη C
end
1 2 2 6 2 2 4 8
j i
2 6 2 1 4 2 8 2 A
1 2 2 2 2 4 6 C
![Page 63: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/63.jpg)
Αλγόριθμος Quick-Sort
Ευστάθεια Merge-Sort
Algorithm Merge-Sort(A, left, right)
begin
if (left right) return
mid = (left + right) / 2
Merge-Sort(A, left, mid)
Merge-Sort(A, mid+1, right)
Merge(A, left, mid, right)
end
Algorithm Merge()
i ← j ← 1
while (A B )
if (ai ≤ bj) προσάρτηση ai στη C και i ← i+1
else{ai > bj}προσάρτηση bj στη C και j ← j+1
end
προσάρτηση των υπόλοιπων στοιχείων της
μη-άδειας ακολουθίας A ή B στη C
end
1 2 2 6 2 2 4 8
j i
2 6 2 1 4 2 8 2 A
1 2 2 2 2 4 6 8 C
Ευσταθής Αλγόριθμος
![Page 64: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/64.jpg)
Αλγόριθμοι Quick-Sort & Merge-Sort
Σύγκριση Αλγορίθμων Ταξινόμησης
Quick-Sort
Merge-Sort
![Page 65: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/65.jpg)
Αλγόριθμοι Quick-Sort & Merge-Sort
Σύγκριση Αλγορίθμων Ταξινόμησης
![Page 66: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/66.jpg)
Σύγκριση Αλγορίθμων Ταξινόμησης
Αλγόριθμοι Quick-Sort & Merge-Sort
Bubble-Sort
Insertion-Sort
Quick-Sort
![Page 67: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/67.jpg)
Αλγόριθμοι Quick-Sort & Merge-Sort
Σύγκριση Αλγορίθμων Ταξινόμησης
Selection-Sort
Insertion-Sort
Merge-Sort
![Page 68: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/68.jpg)
Αλγόριθμος Heap-Sort
Αλγόριθμος Heap-Sort
![Page 69: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/69.jpg)
Αλγόριθμος Heap-Sort
Αλγόριθμος Heap-Sort
Ο αλγόριθμος προτάθηκε από τον Williams το 1964.
Βασίζεται στην ιδιότητα του σωρού: το max (ή min) στοιχείο βρίσκεται στην ρίζα.
�Ο αλγόριθμος Heap-Sort εκτελείται σε δύο φάσεις:
(1) τη φάση της δημιουργίας του σωρού, και
(2) τη φάση της επεξεργασίας του σωρού.
Ιδέα Αλγόριθμου !!!
16
14 10
9 3
1 4 2
8 7
Σωρός Μεγίστων :
![Page 70: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/70.jpg)
Αλγόριθμος Heap-Sort
Αλγόριθμος Heap-Sort
Όλοι οι τερματικοί κόμβοι (φύλλα) του σωρού βρίσκονται στο h-1 και h επίπεδο.
Όλες οι διαδρομές από την ρίζα σε ένα τερματικό κόμβο του h είναι αριστερά όλων των διαδρομών από την ρίζα σε ένα τερματικό κόμβο του h-1 επιπέδου.
Ο δεξιότερος εσωτερικός κόμβος του h-1 επιπέδου έχει αριστερό παιδί.
Ιδιότητα μερικής διάταξης (partial order):
Η τιμή του κλειδιού ενός κόμβου είναι μεγαλύτερη ή ίση (σωρός μεγίστων)
από τις τιμές των κλειδιών των παιδιών του !
Ιδιότητες Σωρού!!!
16
14 10
9 3
1 4 2
8 7
Σωρός Μεγίστων :
![Page 71: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/71.jpg)
Αλγόριθμος Heap-Sort
Αλγόριθμος Heap-Sort
Algorithm Heap-sort
begin
for i ← 1 to n-1 do
min ← S[i]; pos ← i
for j ← i+1 to n do
if S[j] < min then
min ← S[j]; pos ←j
end
end
Swap(S[i], S[pos])
end
return S
end
Διάγραψε τη ρίζα (x = max) του σωρού με στοιχεία
S[1,i]
και την τιμή της καταχώρησε τη στη θέση i του πίνακα Α[1,n]
8
7 3
1 4 2
9 10 14 16
Διαγραφή Max = 8
![Page 72: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/72.jpg)
Αλγόριθμος Heap-Sort
16
14 10
9 3
1 4 2
8 7
Διαγραφή Max
Αλγόριθμος Heap-Sort
Ας θυμηθούμε…
Max = 16
![Page 73: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/73.jpg)
Αλγόριθμος Heap-Sort
1
14 10
9 3
1 4 2
8 7
Αλγόριθμος Heap-Sort
Ας θυμηθούμε…
Διαγραφή Max
Max = 16
![Page 74: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/74.jpg)
Αλγόριθμος Heap-Sort
1
14 10
9 3
4 2
8 7
Αλγόριθμος Heap-Sort
Ας θυμηθούμε…
Αποκατάσταση Heap
Διαγραφή Max
Η τιμή του κλειδιού ενός κόμβου είναι μεγαλύτερη ή ίση (σωρός μεγίστων) από τις
τιμές των κλειδιών των παιδιών του
![Page 75: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/75.jpg)
Αλγόριθμος Heap-Sort
14
1 10
9 3
4 2
8 7
Αλγόριθμος Heap-Sort
Ας θυμηθούμε…
Αποκατάσταση Heap
Διαγραφή Max
Η τιμή του κλειδιού ενός κόμβου είναι μεγαλύτερη ή ίση (σωρός μεγίστων) από τις
τιμές των κλειδιών των παιδιών του
![Page 76: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/76.jpg)
Αλγόριθμος Heap-Sort
14
1 10
9 3
4 2
8 7
Αλγόριθμος Heap-Sort
Ας θυμηθούμε…
Αποκατάσταση Heap
Διαγραφή Max
Η τιμή του κλειδιού ενός κόμβου είναι μεγαλύτερη ή ίση (σωρός μεγίστων) από τις
τιμές των κλειδιών των παιδιών του
![Page 77: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/77.jpg)
Αλγόριθμος Heap-Sort
14
8 10
9 3
4 2
1 7
Αλγόριθμος Heap-Sort
Ας θυμηθούμε…
Αποκατάσταση Heap
Διαγραφή Max
Η τιμή του κλειδιού ενός κόμβου είναι μεγαλύτερη ή ίση (σωρός μεγίστων) από τις
τιμές των κλειδιών των παιδιών του
![Page 78: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/78.jpg)
Αλγόριθμος Heap-Sort
14
8 10
9 3
4 2
1 7
Αλγόριθμος Heap-Sort
Ας θυμηθούμε…
Αποκατάσταση Heap
Διαγραφή Max
Η τιμή του κλειδιού ενός κόμβου είναι μεγαλύτερη ή ίση (σωρός μεγίστων) από τις
τιμές των κλειδιών των παιδιών του
![Page 79: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/79.jpg)
Αλγόριθμος Heap-Sort
14
8 10
9 3
1 2
4 7
Αλγόριθμος Heap-Sort
Ας θυμηθούμε…
Αποκατάσταση Heap
Διαγραφή Max
Η τιμή του κλειδιού ενός κόμβου είναι μεγαλύτερη ή ίση (σωρός μεγίστων) από τις
τιμές των κλειδιών των παιδιών του
![Page 80: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/80.jpg)
Αλγόριθμος Heap-Sort
16
14 10
9 3
1 4 2
8 7
Αλγόριθμος Heap-Sort Παράδειγμα
Είσοδος Αλγόριθμου
Σωρός Μεγίστων
![Page 81: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/81.jpg)
Αλγόριθμος Heap-Sort
16
14 10
9 3
1 4 2
8 7
Διαγραφή Max =16
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 1
![Page 82: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/82.jpg)
Αλγόριθμος Heap-Sort
1
14 10
9 3
4 2
8 7
16
14
8 10
9 3
1 2
4 7
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 1
Αποκατάσταση Heap
![Page 83: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/83.jpg)
Αλγόριθμος Heap-Sort
14
8 10
9 3
2
4 7
16
1 Διαγραφή Max = 14
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 2
![Page 84: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/84.jpg)
Αλγόριθμος Heap-Sort
1
8 10
9 3
2
4 7
14 16
10
8 9
1 3
2
4 7
Αποκατάσταση Heap
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 2
![Page 85: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/85.jpg)
Αλγόριθμος Heap-Sort
10
8 9
1 3
2
4 7
14 16
Διαγραφή Max = 10
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 3
![Page 86: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/86.jpg)
Αλγόριθμος Heap-Sort
2
8 9
1 3 4 7
10 14 16
9
8 3
1 2 4 7
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 3
Αποκατάσταση Heap
![Page 87: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/87.jpg)
Αλγόριθμος Heap-Sort
9
8 3
1 2 4 7
10 14 16
Διαγραφή Max = 9
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 4
![Page 88: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/88.jpg)
Αλγόριθμος Heap-Sort
2
8 3
1 4 7
9 10 14 16
8
7 3
1 4 2
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 4
Αποκατάσταση Heap
![Page 89: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/89.jpg)
Αλγόριθμος Heap-Sort
8
7 3
1 4 2
9 10 14 16
Διαγραφή Max = 8
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 5
![Page 90: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/90.jpg)
Αλγόριθμος Heap-Sort
8
7 3
4 2
8 9 10 14 16
7
4 3
1 2
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 5
Αποκατάσταση Heap
![Page 91: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/91.jpg)
Αλγόριθμος Heap-Sort
7
4 3
1 2
7 8 9 10 14 16
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 6
![Page 92: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/92.jpg)
Αλγόριθμος Heap-Sort
7
4 3
1 2
4 7 8 9 10 14 16
4
2 3
1
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 7
![Page 93: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/93.jpg)
Αλγόριθμος Heap-Sort
7
4 3
1 2
3 4 7 8 9 10 14 16
4
2 3
1
3
2 1
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 8
![Page 94: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/94.jpg)
Αλγόριθμος Heap-Sort
7
4 3
1 2
2 3 4 7 8 9 10 14 16
4
2 3
1
3
2 1
2
1
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 9
![Page 95: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/95.jpg)
Αλγόριθμος Heap-Sort
7
4 3
1 2
1 2 3 4 7 8 9 10 14 16
4
2 3
1
3
2 1
2
1
1
Αλγόριθμος Heap-Sort Παράδειγμα
Βήμα 10
![Page 96: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/96.jpg)
Αλγόριθμος Heap-Sort
1 2 3 4 7 8 9 10 14 16
16
14 10
9 3
1 4 2
8 7
Αλγόριθμος Heap-Sort Παράδειγμα
Έξοδος Αλγόριθμου
Ταξινομημένη ακολουθία στοιχείων
![Page 97: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/97.jpg)
Αλγόριθμος Heap-Sort
Αλγόριθμος Heap-Sort
16 14 10 8 7 9 3 2 4 1
Heap μεγέθους N = 10
Διατήρηση σωρού σε πίνακα !!!
Εκτός από την χρήση δεικτών (δομή δένδρο) για την αναπαράσταση ενός σωρού Ν στοιχείων, μπορούμε να χρησιμοποιήσουμε έναν πίνακα A μήκους Ν.
Οι κόμβοι του σωρού αντιστοιχούν στις θέσεις του πίνακα Η:
A(1) είναι η ρίζα, και για κάθε κόμβο στην θέση i τα παιδιά του βρίσκονται στις θέσεις 2i και 2i+1.
O πατέρας του κόμβου i βρίσκεται στη θέση i/2.
A :
16
14 10
9 3
1 4 2
8 7
![Page 98: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/98.jpg)
Αλγόριθμος Heap-Sort
16
14 10
9 3
1 4 2
8 7
Διαγραφή Max
Αλγόριθμος Heap-Sort
Διατήρηση σωρού σε πίνακα !!!
16 14 10 8 7 9 3 2 4 1
Heap μεγέθους N = 10
![Page 99: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/99.jpg)
Αλγόριθμος Heap-Sort
1
14 10
9 3
1 4 2
8 7
Αλγόριθμος Heap-Sort
1 14 10 8 7 9 3 2 4 16
Αποκατάσταση Heap μεγέθους N-1
Διαγραφή Max
Διατήρηση σωρού σε πίνακα !!!
![Page 100: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/100.jpg)
Αλγόριθμος Heap-Sort
1
14 10
9 3
4 2
8 7
Αλγόριθμος Heap-Sort
1 14 10 8 7 9 3 2 4 16
Αποκατάσταση Heap μεγέθους N-1
Αποκατάσταση Heap
Διαγραφή Max
Διατήρηση σωρού σε πίνακα !!!
![Page 101: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/101.jpg)
Αλγόριθμος Heap-Sort
14
1 10
9 3
4 2
8 7
Αλγόριθμος Heap-Sort
14 1 10 8 7 9 3 2 4 16
Αποκατάσταση Heap μεγέθους N-1
Αποκατάσταση Heap
Διαγραφή Max
Διατήρηση σωρού σε πίνακα !!!
![Page 102: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/102.jpg)
Αλγόριθμος Heap-Sort
14
1 10
9 3
4 2
8 7
Αλγόριθμος Heap-Sort
14 1 10 8 7 9 3 2 4 16
Αποκατάσταση Heap μεγέθους N-1
Αποκατάσταση Heap
Διαγραφή Max
Διατήρηση σωρού σε πίνακα !!!
![Page 103: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/103.jpg)
Αλγόριθμος Heap-Sort
14
8 10
9 3
4 2
1 7
Αλγόριθμος Heap-Sort
14 8 10 1 7 9 3 2 4 16
Αποκατάσταση Heap μεγέθους N-1
Αποκατάσταση Heap
Διαγραφή Max
Διατήρηση σωρού σε πίνακα !!!
![Page 104: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/104.jpg)
Αλγόριθμος Heap-Sort
14
8 10
9 3
4 2
1 7
Αλγόριθμος Heap-Sort
14 8 10 1 7 9 3 2 4 16
Αποκατάσταση Heap μεγέθους N-1
Αποκατάσταση Heap
Διαγραφή Max
Διατήρηση σωρού σε πίνακα !!!
![Page 105: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/105.jpg)
Αλγόριθμος Heap-Sort
14
8 10
9 3
1 2
4 7
Αλγόριθμος Heap-Sort
14 8 10 4 7 9 3 2 1 16
Αποκατάσταση Heap μεγέθους N-1
Αποκατάσταση Heap
Διαγραφή Max
Διατήρηση σωρού σε πίνακα !!!
![Page 106: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/106.jpg)
Αλγόριθμος Heap-Sort
Αλγόριθμος Heap-Sort
Algorithm Heap-sort
begin
Build-heap(A,n)
heap-size(A) ← n
for i ← heap-size(A) downto 2 do
Swap(A[1], A[i])
heap-size(A)--
Build-heap(A, heap-size(A))
end
return Α
end
Τα προς ταξινόμηση στοιχεία είναι καταχωρημένα στον πίνακα Α μήκος N.
Εάν κάποια στιγμή ο σωρός έχει n < N
στοιχεία χρησιμοποιούμε τις n πρώτες θέσεις του πίνακα A.
16
14 10
9 3
1 4 2
8 7 16 14 10 8 7 9 3 2 4 1
Heap μεγέθους N = 10
A :
![Page 107: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/107.jpg)
Αλγόριθμος Heap-Sort
Αλγόριθμος Heap-Sort
Algorithm Heap-sort
begin
Build-heap(A,n)
heap-size(A) ← n
for i ← heap-size(A) downto 2 do
Swap(A[1], A[i])
heap-size(A)--
Build-heap(A, heap-size(A))
end
return Α
end
Τα προς ταξινόμηση στοιχεία είναι καταχωρημένα στον πίνακα Α μήκος N.
Εάν κάποια στιγμή ο σωρός έχει n < N
στοιχεία χρησιμοποιούμε τις n πρώτες θέσεις του πίνακα A.
16 14 10 8 7 9 3 2 4 1
Heap μεγέθους N = 10
A :
Ορθότητα Πολυπλοκότητα
![Page 108: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/108.jpg)
Αλγόριθμος Heap-Sort
Σύγκριση Αλγορίθμων Ταξινόμησης
![Page 109: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/109.jpg)
Αλγόριθμος Heap-Sort
Σύγκριση Αλγορίθμων Ταξινόμησης
![Page 110: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/110.jpg)
Αλγόριθμος Heap-Sort
Σύγκριση Αλγορίθμων Ταξινόμησης
![Page 111: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/111.jpg)
Είσοδος (x1, x2, . . . , xn)
Αρχικά n ! περιπτώσεις:
x1 < x2 < x3 < . . . < xn x2 < x1 < x3 < . . . < xn
x3 < x1 < x2 < . . . < xn
. . .
xn < xn-1 < . . . < x1
Σε κάθε σύγκριση το πλήθος των περιπτώσεων υποδιπλασιάζεται (στην καλύτερη περίπτωση)
Έχουμε δείξει (Ενότητα 3):
Πλήθος συγκρίσεων ≥ log(n!) ≥ (n logn)/4
Οποιοσδήποτε αλγόριθμος ταξινόμησης n στοιχείων χρειάζεται Ω(n logn) συγκρίσεις
Υπολόγισε ένα ελάχιστο πλήθος Βασικών Πράξεων (συγκρίσεων) που απαιτούνται για την επίλυση του Προβλήματος SORTING
Κάτω Φράγματα Ταξινόμησης
Κάτω φράγμα για ταξινόμηση που χρησιμοποιεί μόνο συγκρίσεις
Κάτω Φράγμα Ταξινόμησης
![Page 112: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/112.jpg)
Κάτω Φράγματα Ταξινόμησης
Κάτω Φράγμα Ταξινόμησης
x[i] <? x[j]
x[b] <? x[c]
x[f] <? x[g] x[h] <? x[i]
x[d] <? x[e]
x[j] <? x[k] x[l] <? x[m]
n !
Ω(n logn)
Δένδρο απόφασης
Οποιοσδήποτε αλγόριθμος ταξινόμησης με συγκρίσεις, ταξινομεί n στοιχεία απαιτώντας τουλάχιστον
n log n
συγκρίσεις. Ύψος δυαδικού δένδρου με n! φύλλα
Λήμμα 3. Για δεδομένο n, το δένδρο απόφασης για οποιοδήποτε αλγόριθμο ταξινόμησης με συγκρίσεις των στοιχείων του έχει ύψος τουλάχιστον n log n.
![Page 113: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/113.jpg)
Κάτω Φράγματα Ταξινόμησης
Κάτω Φράγμα Ταξινόμησης
Δένδρο απόφασης
Οποιοσδήποτε αλγόριθμος ταξινόμησης με συγκρίσεις, ταξινομεί n στοιχεία απαιτώντας τουλάχιστον
n log n
συγκρίσεις.
Κάτω φράγμα ταξινόμησης:
Ύψος δυαδικού δένδρου με n! φύλλα
x[i] <? x[j]
x[b] <? x[c]
x[f] <? x[g] x[h] <? x[i]
x[d] <? x[e]
x[j] <? x[k] x[l] <? x[m]
n !
Ω(n logn)
![Page 114: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/114.jpg)
Selection-Sort
Bubble-Sort Insertion -Sort
Quick -Sort Merge–Sort
Heap–Sort
Counting–Sort Bucket-Sort Radix-Sort
Shell-sort
Αλγόριθμοι Ταξινόμησης
![Page 115: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/115.jpg)
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
B
1 2 3 4 5 6 7 8 9 10
1 3 4 4 4 6
C
1 2 3 4 5 6
1 2 4 5 8 9
Αλγόριθμος Counting-Sort
Αλγόριθμος Counting-Sort
![Page 116: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/116.jpg)
Αλγόριθμος Counting-Sort
Ιδέα Αλγόριθμου !!!
• Ο αλγόριθμος ταξινόμησης της απαρίθμησης (Counting–Sort) δέχεται ότι τα n στοιχεία εισόδου (κλειδιά) είναι ακέραιοι στο διάστημα [1, k], όπου k θετικός ακέραιος.
• Όταν k = Ο(n), ο αλγόριθμος εκτελείται σε χρόνο O(n).
Βασική ιδέα: για κάθε στοιχείο x της εισόδου υπολογίζει το πλήθος των στοιχείων που είναι μικρότερα του x.
Για παράδειγμα, εάν υπάρχουν 3 στοιχεία μικρότερα του x, τότε το x θα καταλάβει τη θέση 4 στην ταξινομημένη ακολουθία.
Αλγόριθμος Counting-Sort
![Page 117: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/117.jpg)
Αλγόριθμος Counting-Sort
Ιδέα Αλγόριθμου !!!
• Ο αλγόριθμος ταξινόμησης της απαρίθμησης (Counting–Sort) δέχεται ότι τα n στοιχεία εισόδου (κλειδιά) είναι ακέραιοι στο διάστημα [1, k], όπου k θετικός ακέραιος.
• Όταν k = Ο(n), ο αλγόριθμος εκτελείται σε χρόνο O(n).
Προσοχή !!!: Οι ακέραιοι προς ταξινόμηση είναι τα κλειδιά (keys).
Αλγόριθμος Counting-Sort
3 6 4 1 4 6 … Α :
![Page 118: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/118.jpg)
Α
1 2 n
B
C
1 2 k
Αλγόριθμος Counting-Sort
• Ο αλγόριθμος απαιτεί δύο ακόμα βοηθητικούς πίνακες:
B[1..n] για την καταχώρηση της ταξινομημένης ακολουθίας των στοιχείων.
C[1..k] για την καταχώρηση βοηθητικών πληροφοριών.
• Τα n στοιχεία εισόδου είναι καταχωρημένα στον πίνακα A[1..n].
Ιδέα Αλγόριθμου !!!
Αλγόριθμος Counting-Sort
![Page 119: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/119.jpg)
* * * * * * *
Αλγόριθμος Counting-Sort
Αλγόριθμος
Αλγόριθμος Counting-Sort
Algorithm Counting-sort
begin
(1) for i ← 1 to k do
C[i] ← 0
(2) for i ← 1 to n do
C[A[i]]++
(3) for i ← 2 to k do
C[i] ← C[i] + C[i-1]
(4) for i ← n downto 1 do
B[C[A[i]]] ← A[i]
C[A[i]]--
end
return B
end
C 0 0 0 0 0 0
Είσοδος:
2 0 2 2 0 1
2 2 4 6 6 7
1 2 3 4 5 6 7
Α 3 6 4 1 3 4 1
B 1 1 3 3 4 4 6 Έξοδος:
C
C
Β 1
![Page 120: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/120.jpg)
Μέτρηση
Προθεματικά Αθροίσματα
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
C
1 2 3 4 5 6
2 0 2 4 0 2
C
1 2 3 4 5 6
2 2 4 8 8 10
Αλγόριθμος Counting-Sort Παράδειγμα
Αλγόριθμος Counting-Sort
![Page 121: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/121.jpg)
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Παράδειγμα Αλγόριθμος Counting-Sort
Αρχικοποίηση
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
2 2 4 8 8 10
B
1 2 3 4 5 6 7 8 9 10
![Page 122: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/122.jpg)
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
B
1 2 3 4 5 6 7 8 9 10
A(10) = 6 C(6) = 10 B(10) = 6
Παράδειγμα Αλγόριθμος Counting-Sort
Βήμα 1
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
2 2 4 8 8 10
![Page 123: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/123.jpg)
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
B
1 2 3 4 5 6 7 8 9 10
6
A(10) = 6 C(6) = 10 B(10) = 6
Αλγόριθμος Counting-Sort
Βήμα 1
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
2 2 4 8 8 10
![Page 124: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/124.jpg)
A(10) = 6 C(6) = 10 B(10) = 6
C(6) --
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
B
1 2 3 4 5 6 7 8 9 10
6
Αλγόριθμος Counting-Sort
Βήμα 1
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
2 2 4 8 8 9
![Page 125: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/125.jpg)
A(9) = 4 C(4) = 8 B(8) = 4
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 2
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
2 2 4 8 8 9
B
1 2 3 4 5 6 7 8 9 10
6
![Page 126: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/126.jpg)
A(9) = 4 C(4) = 8 B(8) = 4
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 2
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
2 2 4 8 8 9
B
1 2 3 4 5 6 7 8 9 10
4 6
![Page 127: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/127.jpg)
A(9) = 4 C(4) = 8 B(8) = 4
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 2
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
2 2 4 7 8 9
B
1 2 3 4 5 6 7 8 9 10
4 6
C(4) --
![Page 128: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/128.jpg)
A(8) = 4 C(4) = 7 B(7) = 4
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 3
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
2 2 4 7 8 9
B
1 2 3 4 5 6 7 8 9 10
4 6
![Page 129: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/129.jpg)
A(8) = 4 C(4) = 7 B(7) = 4
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 3
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
2 2 4 7 8 9
B
1 2 3 4 5 6 7 8 9 10
4 4 6
![Page 130: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/130.jpg)
A(8) = 4 C(4) = 7 B(7) = 4
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 3
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
2 2 4 6 8 9
B
1 2 3 4 5 6 7 8 9 10
4 4 6
C(4) --
![Page 131: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/131.jpg)
A(7) = 1 C(1) = 2 B(2) = 1
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 4
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
2 2 4 6 8 9
B
1 2 3 4 5 6 7 8 9 10
4 4 6
![Page 132: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/132.jpg)
A(7) = 1 C(1) = 2 B(2) = 1
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
B
1 2 3 4 5 6 7 8 9 10
1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 4
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
2 2 4 6 8 9
![Page 133: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/133.jpg)
A(7) = 1 C(1) = 2 B(2) = 1
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 4
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
1 2 4 6 8 9
B
1 2 3 4 5 6 7 8 9 10
1 4 4 6
C(1) --
![Page 134: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/134.jpg)
A(6) = 4 C(4) = 6 B(6) = 4
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 5
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
1 2 4 6 8 9
B
1 2 3 4 5 6 7 8 9 10
1 4 4 6
![Page 135: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/135.jpg)
A(6) = 4 C(4) = 6 B(6) = 4
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 5
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
1 2 4 6 8 9
B
1 2 3 4 5 6 7 8 9 10
1 4 4 4 6
![Page 136: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/136.jpg)
A(6) = 4 C(4) = 6 B(6) = 4
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
B
1 2 3 4 5 6 7 8 9 10
1 4 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 5
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
1 2 4 5 8 9 C(4) --
![Page 137: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/137.jpg)
A(5) = 3 C(3) = 4 B(4) = 3
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 6
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
1 2 4 5 8 9
B
1 2 3 4 5 6 7 8 9 10
1 4 4 4 6
![Page 138: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/138.jpg)
A(5) = 3 C(3) = 4 B(4) = 3
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 6
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
1 2 3 5 8 9
B
1 2 3 4 5 6 7 8 9 10
1 3 4 4 4 6
C(3) --
![Page 139: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/139.jpg)
A(4) = 1 C(1) = 1 B(1) = 1
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 7
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
1 2 3 5 8 9
B
1 2 3 4 5 6 7 8 9 10
1 3 4 4 4 6
![Page 140: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/140.jpg)
A(4) = 1 C(1) = 1 B(1) = 1
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 7
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
0 2 3 5 8 9
B
1 2 3 4 5 6 7 8 9 10
1 1 3 4 4 4 6
C(1) --
![Page 141: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/141.jpg)
A(3) = 4 C(4) = 5 B(5) = 4
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
Αλγόριθμος Counting-Sort
Βήμα 8
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
0 2 3 4 8 9
B
1 2 3 4 5 6 7 8 9 10
1 1 3 4 4 4 4 6
C(4) --
![Page 142: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/142.jpg)
A(2) = 6 C(6) = 9 B(9) = 6
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
B
1 2 3 4 5 6 7 8 9 10
1 1 3 4 4 4 4 6 6
Αλγόριθμος Counting-Sort
Βήμα 9
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
0 2 3 4 8 8 C(6) --
![Page 143: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/143.jpg)
A(1) = 3 C(3) = 3 B(3) = 3
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
B
1 2 3 4 5 6 7 8 9 10
1 1 3 3 4 4 4 4 6 6
Αλγόριθμος Counting-Sort
Βήμα 10
Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
0 2 2 4 8 8 C(3) --
![Page 144: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/144.jpg)
A(1) = 3 C(3) = 3 B(3) = 3
Α
1 2 3 4 5 6 7 8 9 10
3 6 4 1 3 4 1 4 4 6
B
1 2 3 4 5 6 7 8 9 10
1 1 3 3 4 4 4 4 6 6
Αλγόριθμος Counting-Sort Παράδειγμα
Αλγόριθμος Counting-Sort
C
1 2 3 4 5 6
0 2 2 4 8 8 C(3) --
Τέλος Αλγόριθμου
![Page 145: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/145.jpg)
Αλγόριθμος Radix-Sort
Αλγόριθμος Radix-Sort
![Page 146: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/146.jpg)
Έστω ότι θέλουμε να ταξινομήσουμε Ν άτομα ως προς την ημερομηνία γέννησής τους (έτος-μήνας-ημέρα) κατά φθίνουσα τάξη.
Αλγόριθμος Radix-Sort
Μια εφαρμογή ταξινόμησης!!!
Αλγόριθμος Radix-Sort
2016–05-22
1980–03-12
1995–16-03
2012–10-14
2016–11-26
2012–05-26
2016–09-17
2016–05-26
1980-03-15
Ένας απλός τρόπος με την χρήση του αλγόριθμου Counting-Sort !!!
Ταξινομούμε αρχικά τα Ν άτομα ως προς το έτος γέννησής τους!
Στη συνέχεια, άτομα με το ίδιο έτος γέννησης τα ταξινομούμε ως προς το μήνα γέννησης τους !!
Τέλος, άτομα με το ίδιο έτος και μήνα γέννησης τα ταξινομούμε ως προς την ημέρα γέννησης τους !!
Υπάρχει κάποια «δυσκολία» σε αυτό τον τρόπο ?
![Page 147: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/147.jpg)
Έστω ότι θέλουμε να ταξινομήσουμε Ν άτομα ως προς την ημερομηνία γέννησής τους (έτος-μήνας-ημέρα) κατά φθίνουσα τάξη.
Αλγόριθμος Radix-Sort
Μια εφαρμογή ταξινόμησης!!!
Αλγόριθμος Radix-Sort
2016–05-22
1980–03-12
1995–16-03
2012–10-14
2016–11-26
2012–05-26
2016–09-17
2016–05-26
1980-03-15
2016 –05-22
2016–11-26
2016–09-17
2016–05-26
2012–10-14
2012–05-26
1995–16-03
1980–03-12
1980-03-15
![Page 148: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/148.jpg)
Έστω ότι θέλουμε να ταξινομήσουμε Ν άτομα ως προς την ημερομηνία γέννησής τους (έτος-μήνας-ημέρα) κατά φθίνουσα τάξη.
Αλγόριθμος Radix-Sort
Μια εφαρμογή ταξινόμησης!!!
Αλγόριθμος Radix-Sort
2016–05-22
1980–03-12
1995–16-03
2012–10-14
2016–11-26
2012–05-26
2016–09-17
2016–05-26
1980-03-15
2016 –05-22
2016–11-26
2016–09-17
2016–05-26
2012–10-14
2012–05-26
1995–16-03
1980–03-12
1980-03-15
2016–11-26
2016–09-17
2016–05-22
2016–05-26
2012–10-14
2012–05-26
1995–16-03
1980-03-12
1980–03-15
![Page 149: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/149.jpg)
Έστω ότι θέλουμε να ταξινομήσουμε Ν άτομα ως προς την ημερομηνία γέννησής τους (έτος-μήνας-ημέρα) κατά φθίνουσα τάξη.
Αλγόριθμος Radix-Sort
Μια εφαρμογή ταξινόμησης!!!
Αλγόριθμος Radix-Sort
2016–05-22
1980–03-12
1995–16-03
2012–10-14
2016–11-26
2012–05-26
2016–09-17
2016–05-26
1980-03-15
2016 –05-22
2016–11-26
2016–09-17
2016–05-26
2012–10-14
2012–05-26
1995–16-03
1980–03-12
1980-03-15
2016–11-26
2016–09-17
2016–05-22
2016–05-26
2012–10-14
2012–05-26
1995–16-03
1980-03-12
1980–03-15
2016–11-26
2016–09-17
2016–05-26
2016–05-22
2012–05-26
2012–10-14
1995–16-03
1980-03-15
1980–03-12
![Page 150: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/150.jpg)
Έστω ότι θέλουμε να ταξινομήσουμε Ν άτομα ως προς την ημερομηνία γέννησής τους (έτος-μήνας-ημέρα) κατά φθίνουσα τάξη.
Αλγόριθμος Radix-Sort
Μια εφαρμογή ταξινόμησης!!!
Αλγόριθμος Radix-Sort
2016–05-22
1980–03-12
1995–16-03
2012–10-14
2016–11-26
2012–05-26
2016–09-17
2016–05-26
1980-03-15
2016 –05-22
2016–11-26
2016–09-17
2016–05-26
2012–10-14
2012–05-26
1995–16-03
1980–03-12
1980-03-15
2016–11-26
2016–09-17
2016–05-22
2016–05-26
2012–10-14
2012–05-26
1995–16-03
1980-03-12
1980–03-15
2016–11-26
2016–09-17
2016–05-26
2016–05-22
2012–05-26
2012–10-14
1995–16-03
1980-03-15
1980–03-12
2016–11-26
2016–09-17
2016–05-26
2016–05-22
2012–05-26
2012–10-14
1995–16-03
1980-08-15
1980–03-12
![Page 151: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/151.jpg)
Έστω ότι τα στοιχεία είναι ακέραιοι με k ψηφία καταχωρημένα σε ένα πίνακα A.
Ο αλγόριθμος Radix-Sort εργάζεται ως εξής:
Αλγόριθμος Radix-Sort
Ιδέα Αλγόριθμου !!!
Αλγόριθμος Radix-Sort
329
457
657
839
436
720
355
Παράδειγμα :
![Page 152: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/152.jpg)
Έστω ότι τα στοιχεία είναι ακέραιοι με k ψηφία καταχωρημένα σε ένα πίνακα A.
Ο αλγόριθμος Radix-Sort εργάζεται ως εξής:
Αλγόριθμος Radix-Sort
Ιδέα Αλγόριθμου !!!
Αλγόριθμος Radix-Sort
329
457
657
839
436
720
355
Παράδειγμα :
![Page 153: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/153.jpg)
Έστω ότι τα στοιχεία είναι ακέραιοι με k ψηφία καταχωρημένα σε ένα πίνακα A.
Ο αλγόριθμος Radix-Sort εργάζεται ως εξής:
Αλγόριθμος Radix-Sort
Ιδέα Αλγόριθμου !!!
Αλγόριθμος Radix-Sort
329
457
657
839
436
720
355
Παράδειγμα :
![Page 154: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/154.jpg)
Έστω ότι τα στοιχεία είναι ακέραιοι με k ψηφία καταχωρημένα σε ένα πίνακα A.
Ο αλγόριθμος Radix-Sort εργάζεται ως εξής:
Αλγόριθμος Radix-Sort
Ιδέα Αλγόριθμου !!!
Αλγόριθμος Radix-Sort
329
457
657
839
436
720
355
Παράδειγμα :
![Page 155: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/155.jpg)
Έστω ότι τα στοιχεία είναι ακέραιοι με k ψηφία καταχωρημένα σε ένα πίνακα A.
Ο αλγόριθμος Radix-Sort εργάζεται ως εξής:
Αλγόριθμος Radix-Sort
Ιδέα Αλγόριθμου !!!
Αλγόριθμος Radix-Sort
329
457
657
839
436
720
355
Παράδειγμα :
![Page 156: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/156.jpg)
Αλγόριθμος Radix-Sort
Αλγόριθμος Radix-Sort
Πολυπλοκότητα
329
457
657
839
436
720
355
Παράδειγμα :
![Page 157: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/157.jpg)
Αλγόριθμος Radix-Sort
Σύγκριση Αλγορίθμων Ταξινόμησης
Bubble-Sort
Selection-Sort
Insertion-Sort
Merge-Sort
Radix-Sort
![Page 158: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/158.jpg)
Αλγόριθμος Bucket-Sort
Αλγόριθμος Bucket-Sort
![Page 159: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/159.jpg)
Αλγόριθμος Bucket-Sort
Ιδέα Αλγόριθμου !!!
Αλγόριθμος Bucket-Sort
Ο αλγόριθμος της ταξινόμησης με κάδους (Bucket-Sort) δέχεται ότι τα n προς ταξινόμηση στοιχείων παράγονται από μια τυχαία διαδικασία η οποία κατανέμει τα στοιχεία ομοιόμορφα στο διάστημα [0, 1).
Τα στοιχεία των κάδων ταξινομούνται με την χρήση ενός αλγόριθμου ταξινόμησης.
Ο αλγόριθμος εκτελείται σε χρόνο O(n)
Τεχνική : Ο αλγόριθμος χωρίζει το διάστημα [0, 1) σε n ίσου μήκους υποδιαστήματα, ή «κάδους» όπως συνηθίζονται να λέγονται, και κατόπιν να κατανέμει τα n στοιχεία στους κάδους.
![Page 160: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/160.jpg)
Παράδειγμα: Έστω ότι θέλουμε να ταξινομήσουμε τους 3-ψήφιους ακεραίους:
Πολυπλοκότητα:
Αλγόριθμος Bucket-Sort
Αλγόριθμος Bucket-Sort
329
457
657
839
436
720
355
![Page 161: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/161.jpg)
Αλγόριθμος Shell-Sort
Αλγόριθμος Shell-Sort
![Page 162: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/162.jpg)
Οι υποακολουθίες καθορίζονται από μια σειρά βημάτων προσαύξησης (increments):
h1, h2, h3, …, ht-1, ht
Αλγόριθμος Shell-Sort
Ιδέα Αλγόριθμου !!!
Αλγόριθμος Shell-Sort
Η τεχνική του αλγόριθμου είναι ενδιαφέρουσα, ο αλγόριθμος προγραμματίζεται εύκολα και εκτελείται γρήγορα.
Τεχνική : Ο αλγόριθμος ταξινομεί μια ακολουθία S με n στοιχεία με επιτυχή ταξινόμηση υποακολουθιών της ακολουθία S.
![Page 163: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/163.jpg)
h1 = 6
Αλγόριθμος Shell-Sort Παράδειγμα
7 19 24 13 31 29 82 18 44 63 5 8
8 29
5 31
13 63
24 44
18 19
7 82
7 18 24 13 5 8 82 19 44 63 31 29
Αλγόριθμος Shell-Sort
![Page 164: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/164.jpg)
h2 = 4
Αλγόριθμος Shell-Sort Παράδειγμα
7 18 24 13 5 8 82 19 44 63 31 29
13 19 29
24 31 82
8 18 63
5 7 44
5 8 24 13 7 18 31 19 44 63 82 29
Αλγόριθμος Shell-Sort
![Page 165: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/165.jpg)
h3 = 3
Αλγόριθμος Shell-Sort Παράδειγμα
5 8 24 13 7 18 31 19 44 63 82 29
18 24 29 44
7 8 19 82
5 13 31 63
5 7 18 13 8 24 31 19 29 63 82 44
Αλγόριθμος Shell-Sort
![Page 166: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/166.jpg)
h4 = 2
Αλγόριθμος Shell-Sort Παράδειγμα
5 7 18 13 8 24 31 19 29 63 82 44
7 13 19 24 44 63
5 8 18 29 31 82
5 7 8 13 18 19 29 24 31 44 82 63
Αλγόριθμος Shell-Sort
![Page 167: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/167.jpg)
h5 = 1
Αλγόριθμος Shell-Sort Παράδειγμα
5 7 8 13 18 19 29 24 31 44 82 63
5 7 8 13 18 19 29 24 31 44 63 82
5 7 8 13 18 19 29 24 31 44 63 82
Ταξινομημένη Ακολουθία
Αλγόριθμος Shell-Sort
![Page 168: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/168.jpg)
Αλγόριθμος Shell-Sort
Σύγκριση Αλγορίθμων Ταξινόμησης
![Page 169: Σεδίαση και Ανάλση Αλγορίθμωνstavros/BSc-DAA-Algorithms/DAA-05.0...Σεδίαση και Ανάλση Αλγορίθμων Ενότητα 5.0 Ταξινόμηση](https://reader031.vdocuments.pub/reader031/viewer/2022040805/5e427d52efade5533e661a24/html5/thumbnails/169.jpg)
Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής
Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros
Ευχαριστώ για τη Συμμετοχή σας !!!