Αλγόριθμος heapsort
TRANSCRIPT
Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 8 ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT
Δημήτριος Κουκόπουλος
Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων
Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος
και Νέων Τεχνολογιών
2
ΠΕΡΙΕΧΟΜΕΝΟ
Βασικές Έννοιες ndash Δομή Σωρού Σωρός
Αλγόριθμος Κατασκευής Σωρού
Αλγόριθμος Συμπλήρωσης Σωρού
Παράδειγμα
Αλγόριθμος Ταξινόμησης Σωρού - HeapSort
Παράδειγμα
3
ΔΟΜΗ ΣΩΡΟΥ
Ορισμός
Δέντρο που προκύπτει από πλήρες δυαδικό δέντρο με ρίζα αν του
αφαιρεθούν μερικοί κόμβοι (ή κανένας) από τα δεξιά του τελευταίου
επιπέδου
Ειδικότερα δομή σωρού έχω σε ένα δέντρο αν
όλοι οι εσωτερικοί κόμβοι έχουν δυο παιδιά με μόνη εξαίρεση τον πιο δεξιά
εσωτερικό κόμβο του επιπέδου d-1 που επιτρέπεται να έχει βαθμό 1 οπότε θα
έχει μόνο αριστερό παιδί και
στο επίπεδο d-1 τα φύλλα είναι όλα στα δεξιά των εσωτερικών κόμβων
4
ΑΝΤΙΣΤΟΙΧΙΣΗ ΛΙΣΤΑΣ ΣΕ ΔΟΜΗ ΣΩΡΟΥ
Αν έχω μια λίστα L με n αριθμούς τους αντιστοιχίζω σε μια δομή σωρού βάθους
έτσι ώστε στο επίπεδο j της δομής σωρού ο πρώτος κόμβος να
αντιστοιχεί στον αριθμό που βρίσκεται στη θέση 2j στη λίστα L και ο τελευταίος
στον αριθμό που βρίσκεται στη θέση 2j+1-1 στη λίστα L με εξαίρεση το
τελευταίο επίπεδο όπου δεν υπάρχουν αρκετοί όροι
nd log
5
ΠΑΡΑΔΕΙΓΜΑ
Αν L=[5 6 7 9 4 3 0 1] τότε η δομή σωρού είναι
5
6 7
9 4 3 0
1
6
ΣΩΡΟΣ - HEAP
Ορισμός
Σωρός ονομάζεται ένα δέντρο στους κόμβους του οποίου αντιστοιχούν
αριθμοί από μια λίστα L και είναι δομή σωρού με την επιπλέον ιδιότητα ο
αριθμός που αντιστοιχεί σε έναν κόμβο να μην είναι μικρότερος από τους
αριθμούς που αντιστοιχούν στα παιδία του αν ο κόμβος έχει παιδιά
7
ΣΧΕΔΙΑΣΜΟΣ ΑΛΓΟΡΙΘΜΟΥ
ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ
Ο αλγόριθμος κατασκευής σωρού παίρνει σαν είσοδο μια
δομή σωρού L και δίνει σαν έξοδο ένα σωρό
Ο αλγόριθμος κατασκευής σωρού χρησιμοποιεί ως
υποαλγόριθμο τον αλγόριθμο συμπλήρωσης σωρού που
παίρνει σαν είσοδο μια δομή σωρού όπου τα παιδιά της
ρίζας είναι σωροί και δίνει σαν έξοδο ένα σωρό
8
ΒΗΜΑΤΑ
Ο αλγόριθμος κατασκευής σωρού επισκέπτεται τους
εσωτερικούς κόμβους του δέντρου εισόδου από επίπεδο σε
επίπεδο και σε κάθε επίπεδο από αριστερά προς τα δεξιά
Η επίσκεψη ξεκινά από το προτελευταίο επίπεδο προς τα
υψηλότερα επίπεδα
Σε κάθε εσωτερικό κόμβο ενεργοποιείται ο αλγόριθμος
συμπλήρωσης σωρού για το δέντρο που έχει ρίζα τον
κόμβο αυτό
9
ΑΛΓΟΡΙΘΜΟΣ ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ-ΚΣ
Είσοδος Δομή σωρού L με n κόμβους
Έξοδος Σωρός
Ψευδοκώδικας
m1=2d
for m=d-1 downto 0 do
k=m
while 2klt=n and kltm1 do
κλήση αλγόριθμου σσ(rkn) k=k+1
end while
m1=2m
end for
nd log
10
ΑΛΓΟΡΙΘΜΟΣ ΣΥΜΠΛΗΡΩΣΗΣ ΣΩΡΟΥ-
ΣΣ(rkn)
Είσοδος Δομή σωρού με δείκτη ρίζας r και n στοιχεία όπου καθένα από τα υποδέντρα της ρίζας είναι σωρός
Έξοδος Σωρός
Ψευδοκώδικας x=L(r)
rleft=2r
while rleft lt= n do
max=rleft
rright=rleft+1
if rrightlt=n and L(rright)gt=L(rleft) then max=rright
if xltL(max) then do
L(r)=L(max)
r=max
rleft=2max
end if
end while
L(r)=x
11
ΠΑΡΑΔΕΙΓΜΑ 14
Πρόβλημα Να εφαρμοστεί ο αλγόριθμος κατασκευής σωρού για τη λίστα
L=[101318289381948392328]
Απάντηση
1 Μετατρέπουμε τη λίστα L σε δομή σωρού
10
13 18
28 9 38 19
48 39 23 28
12
ΠΑΡΑΔΕΙΓΜΑ 24
2 Ξεκινούμε από το προτελευταίο επίπεδο d-1=2 Καλούμε τον αλγόριθμο σσ για
το υποδέντρο με ρίζα το 28 και στη συνέχεια για το υποδέντρο με ρίζα το 9
Οπότε
28
48 39
48
28 39
9
23 28
28
23 9
10
13 18
48 28 38 19
28 39 23 9
13
ΠΑΡΑΔΕΙΓΜΑ 34
3 Πηγαίνουμε σε επίπεδο 1 και καλούμε τον αλγόριθμο σσ για το υποδέντρο με ρίζα το 13 και στη συνέχεια για το υποδέντρο με ρίζα το 18
Οπότε
13
48 28
28 39 23 9
48
39 28
28 13 23 9
18
38 19
38
18 19
10
48 38
39 28 18 19
28 13 23 9
14
ΠΑΡΑΔΕΙΓΜΑ 44
4 Πηγαίνουμε σε επίπεδο 0 και καλούμε τον αλγόριθμο σσ για τη ρίζα με
τον αριθμό 10
48
39 38
28 28 18 19
10 13 23 9
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
2
ΠΕΡΙΕΧΟΜΕΝΟ
Βασικές Έννοιες ndash Δομή Σωρού Σωρός
Αλγόριθμος Κατασκευής Σωρού
Αλγόριθμος Συμπλήρωσης Σωρού
Παράδειγμα
Αλγόριθμος Ταξινόμησης Σωρού - HeapSort
Παράδειγμα
3
ΔΟΜΗ ΣΩΡΟΥ
Ορισμός
Δέντρο που προκύπτει από πλήρες δυαδικό δέντρο με ρίζα αν του
αφαιρεθούν μερικοί κόμβοι (ή κανένας) από τα δεξιά του τελευταίου
επιπέδου
Ειδικότερα δομή σωρού έχω σε ένα δέντρο αν
όλοι οι εσωτερικοί κόμβοι έχουν δυο παιδιά με μόνη εξαίρεση τον πιο δεξιά
εσωτερικό κόμβο του επιπέδου d-1 που επιτρέπεται να έχει βαθμό 1 οπότε θα
έχει μόνο αριστερό παιδί και
στο επίπεδο d-1 τα φύλλα είναι όλα στα δεξιά των εσωτερικών κόμβων
4
ΑΝΤΙΣΤΟΙΧΙΣΗ ΛΙΣΤΑΣ ΣΕ ΔΟΜΗ ΣΩΡΟΥ
Αν έχω μια λίστα L με n αριθμούς τους αντιστοιχίζω σε μια δομή σωρού βάθους
έτσι ώστε στο επίπεδο j της δομής σωρού ο πρώτος κόμβος να
αντιστοιχεί στον αριθμό που βρίσκεται στη θέση 2j στη λίστα L και ο τελευταίος
στον αριθμό που βρίσκεται στη θέση 2j+1-1 στη λίστα L με εξαίρεση το
τελευταίο επίπεδο όπου δεν υπάρχουν αρκετοί όροι
nd log
5
ΠΑΡΑΔΕΙΓΜΑ
Αν L=[5 6 7 9 4 3 0 1] τότε η δομή σωρού είναι
5
6 7
9 4 3 0
1
6
ΣΩΡΟΣ - HEAP
Ορισμός
Σωρός ονομάζεται ένα δέντρο στους κόμβους του οποίου αντιστοιχούν
αριθμοί από μια λίστα L και είναι δομή σωρού με την επιπλέον ιδιότητα ο
αριθμός που αντιστοιχεί σε έναν κόμβο να μην είναι μικρότερος από τους
αριθμούς που αντιστοιχούν στα παιδία του αν ο κόμβος έχει παιδιά
7
ΣΧΕΔΙΑΣΜΟΣ ΑΛΓΟΡΙΘΜΟΥ
ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ
Ο αλγόριθμος κατασκευής σωρού παίρνει σαν είσοδο μια
δομή σωρού L και δίνει σαν έξοδο ένα σωρό
Ο αλγόριθμος κατασκευής σωρού χρησιμοποιεί ως
υποαλγόριθμο τον αλγόριθμο συμπλήρωσης σωρού που
παίρνει σαν είσοδο μια δομή σωρού όπου τα παιδιά της
ρίζας είναι σωροί και δίνει σαν έξοδο ένα σωρό
8
ΒΗΜΑΤΑ
Ο αλγόριθμος κατασκευής σωρού επισκέπτεται τους
εσωτερικούς κόμβους του δέντρου εισόδου από επίπεδο σε
επίπεδο και σε κάθε επίπεδο από αριστερά προς τα δεξιά
Η επίσκεψη ξεκινά από το προτελευταίο επίπεδο προς τα
υψηλότερα επίπεδα
Σε κάθε εσωτερικό κόμβο ενεργοποιείται ο αλγόριθμος
συμπλήρωσης σωρού για το δέντρο που έχει ρίζα τον
κόμβο αυτό
9
ΑΛΓΟΡΙΘΜΟΣ ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ-ΚΣ
Είσοδος Δομή σωρού L με n κόμβους
Έξοδος Σωρός
Ψευδοκώδικας
m1=2d
for m=d-1 downto 0 do
k=m
while 2klt=n and kltm1 do
κλήση αλγόριθμου σσ(rkn) k=k+1
end while
m1=2m
end for
nd log
10
ΑΛΓΟΡΙΘΜΟΣ ΣΥΜΠΛΗΡΩΣΗΣ ΣΩΡΟΥ-
ΣΣ(rkn)
Είσοδος Δομή σωρού με δείκτη ρίζας r και n στοιχεία όπου καθένα από τα υποδέντρα της ρίζας είναι σωρός
Έξοδος Σωρός
Ψευδοκώδικας x=L(r)
rleft=2r
while rleft lt= n do
max=rleft
rright=rleft+1
if rrightlt=n and L(rright)gt=L(rleft) then max=rright
if xltL(max) then do
L(r)=L(max)
r=max
rleft=2max
end if
end while
L(r)=x
11
ΠΑΡΑΔΕΙΓΜΑ 14
Πρόβλημα Να εφαρμοστεί ο αλγόριθμος κατασκευής σωρού για τη λίστα
L=[101318289381948392328]
Απάντηση
1 Μετατρέπουμε τη λίστα L σε δομή σωρού
10
13 18
28 9 38 19
48 39 23 28
12
ΠΑΡΑΔΕΙΓΜΑ 24
2 Ξεκινούμε από το προτελευταίο επίπεδο d-1=2 Καλούμε τον αλγόριθμο σσ για
το υποδέντρο με ρίζα το 28 και στη συνέχεια για το υποδέντρο με ρίζα το 9
Οπότε
28
48 39
48
28 39
9
23 28
28
23 9
10
13 18
48 28 38 19
28 39 23 9
13
ΠΑΡΑΔΕΙΓΜΑ 34
3 Πηγαίνουμε σε επίπεδο 1 και καλούμε τον αλγόριθμο σσ για το υποδέντρο με ρίζα το 13 και στη συνέχεια για το υποδέντρο με ρίζα το 18
Οπότε
13
48 28
28 39 23 9
48
39 28
28 13 23 9
18
38 19
38
18 19
10
48 38
39 28 18 19
28 13 23 9
14
ΠΑΡΑΔΕΙΓΜΑ 44
4 Πηγαίνουμε σε επίπεδο 0 και καλούμε τον αλγόριθμο σσ για τη ρίζα με
τον αριθμό 10
48
39 38
28 28 18 19
10 13 23 9
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
3
ΔΟΜΗ ΣΩΡΟΥ
Ορισμός
Δέντρο που προκύπτει από πλήρες δυαδικό δέντρο με ρίζα αν του
αφαιρεθούν μερικοί κόμβοι (ή κανένας) από τα δεξιά του τελευταίου
επιπέδου
Ειδικότερα δομή σωρού έχω σε ένα δέντρο αν
όλοι οι εσωτερικοί κόμβοι έχουν δυο παιδιά με μόνη εξαίρεση τον πιο δεξιά
εσωτερικό κόμβο του επιπέδου d-1 που επιτρέπεται να έχει βαθμό 1 οπότε θα
έχει μόνο αριστερό παιδί και
στο επίπεδο d-1 τα φύλλα είναι όλα στα δεξιά των εσωτερικών κόμβων
4
ΑΝΤΙΣΤΟΙΧΙΣΗ ΛΙΣΤΑΣ ΣΕ ΔΟΜΗ ΣΩΡΟΥ
Αν έχω μια λίστα L με n αριθμούς τους αντιστοιχίζω σε μια δομή σωρού βάθους
έτσι ώστε στο επίπεδο j της δομής σωρού ο πρώτος κόμβος να
αντιστοιχεί στον αριθμό που βρίσκεται στη θέση 2j στη λίστα L και ο τελευταίος
στον αριθμό που βρίσκεται στη θέση 2j+1-1 στη λίστα L με εξαίρεση το
τελευταίο επίπεδο όπου δεν υπάρχουν αρκετοί όροι
nd log
5
ΠΑΡΑΔΕΙΓΜΑ
Αν L=[5 6 7 9 4 3 0 1] τότε η δομή σωρού είναι
5
6 7
9 4 3 0
1
6
ΣΩΡΟΣ - HEAP
Ορισμός
Σωρός ονομάζεται ένα δέντρο στους κόμβους του οποίου αντιστοιχούν
αριθμοί από μια λίστα L και είναι δομή σωρού με την επιπλέον ιδιότητα ο
αριθμός που αντιστοιχεί σε έναν κόμβο να μην είναι μικρότερος από τους
αριθμούς που αντιστοιχούν στα παιδία του αν ο κόμβος έχει παιδιά
7
ΣΧΕΔΙΑΣΜΟΣ ΑΛΓΟΡΙΘΜΟΥ
ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ
Ο αλγόριθμος κατασκευής σωρού παίρνει σαν είσοδο μια
δομή σωρού L και δίνει σαν έξοδο ένα σωρό
Ο αλγόριθμος κατασκευής σωρού χρησιμοποιεί ως
υποαλγόριθμο τον αλγόριθμο συμπλήρωσης σωρού που
παίρνει σαν είσοδο μια δομή σωρού όπου τα παιδιά της
ρίζας είναι σωροί και δίνει σαν έξοδο ένα σωρό
8
ΒΗΜΑΤΑ
Ο αλγόριθμος κατασκευής σωρού επισκέπτεται τους
εσωτερικούς κόμβους του δέντρου εισόδου από επίπεδο σε
επίπεδο και σε κάθε επίπεδο από αριστερά προς τα δεξιά
Η επίσκεψη ξεκινά από το προτελευταίο επίπεδο προς τα
υψηλότερα επίπεδα
Σε κάθε εσωτερικό κόμβο ενεργοποιείται ο αλγόριθμος
συμπλήρωσης σωρού για το δέντρο που έχει ρίζα τον
κόμβο αυτό
9
ΑΛΓΟΡΙΘΜΟΣ ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ-ΚΣ
Είσοδος Δομή σωρού L με n κόμβους
Έξοδος Σωρός
Ψευδοκώδικας
m1=2d
for m=d-1 downto 0 do
k=m
while 2klt=n and kltm1 do
κλήση αλγόριθμου σσ(rkn) k=k+1
end while
m1=2m
end for
nd log
10
ΑΛΓΟΡΙΘΜΟΣ ΣΥΜΠΛΗΡΩΣΗΣ ΣΩΡΟΥ-
ΣΣ(rkn)
Είσοδος Δομή σωρού με δείκτη ρίζας r και n στοιχεία όπου καθένα από τα υποδέντρα της ρίζας είναι σωρός
Έξοδος Σωρός
Ψευδοκώδικας x=L(r)
rleft=2r
while rleft lt= n do
max=rleft
rright=rleft+1
if rrightlt=n and L(rright)gt=L(rleft) then max=rright
if xltL(max) then do
L(r)=L(max)
r=max
rleft=2max
end if
end while
L(r)=x
11
ΠΑΡΑΔΕΙΓΜΑ 14
Πρόβλημα Να εφαρμοστεί ο αλγόριθμος κατασκευής σωρού για τη λίστα
L=[101318289381948392328]
Απάντηση
1 Μετατρέπουμε τη λίστα L σε δομή σωρού
10
13 18
28 9 38 19
48 39 23 28
12
ΠΑΡΑΔΕΙΓΜΑ 24
2 Ξεκινούμε από το προτελευταίο επίπεδο d-1=2 Καλούμε τον αλγόριθμο σσ για
το υποδέντρο με ρίζα το 28 και στη συνέχεια για το υποδέντρο με ρίζα το 9
Οπότε
28
48 39
48
28 39
9
23 28
28
23 9
10
13 18
48 28 38 19
28 39 23 9
13
ΠΑΡΑΔΕΙΓΜΑ 34
3 Πηγαίνουμε σε επίπεδο 1 και καλούμε τον αλγόριθμο σσ για το υποδέντρο με ρίζα το 13 και στη συνέχεια για το υποδέντρο με ρίζα το 18
Οπότε
13
48 28
28 39 23 9
48
39 28
28 13 23 9
18
38 19
38
18 19
10
48 38
39 28 18 19
28 13 23 9
14
ΠΑΡΑΔΕΙΓΜΑ 44
4 Πηγαίνουμε σε επίπεδο 0 και καλούμε τον αλγόριθμο σσ για τη ρίζα με
τον αριθμό 10
48
39 38
28 28 18 19
10 13 23 9
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
4
ΑΝΤΙΣΤΟΙΧΙΣΗ ΛΙΣΤΑΣ ΣΕ ΔΟΜΗ ΣΩΡΟΥ
Αν έχω μια λίστα L με n αριθμούς τους αντιστοιχίζω σε μια δομή σωρού βάθους
έτσι ώστε στο επίπεδο j της δομής σωρού ο πρώτος κόμβος να
αντιστοιχεί στον αριθμό που βρίσκεται στη θέση 2j στη λίστα L και ο τελευταίος
στον αριθμό που βρίσκεται στη θέση 2j+1-1 στη λίστα L με εξαίρεση το
τελευταίο επίπεδο όπου δεν υπάρχουν αρκετοί όροι
nd log
5
ΠΑΡΑΔΕΙΓΜΑ
Αν L=[5 6 7 9 4 3 0 1] τότε η δομή σωρού είναι
5
6 7
9 4 3 0
1
6
ΣΩΡΟΣ - HEAP
Ορισμός
Σωρός ονομάζεται ένα δέντρο στους κόμβους του οποίου αντιστοιχούν
αριθμοί από μια λίστα L και είναι δομή σωρού με την επιπλέον ιδιότητα ο
αριθμός που αντιστοιχεί σε έναν κόμβο να μην είναι μικρότερος από τους
αριθμούς που αντιστοιχούν στα παιδία του αν ο κόμβος έχει παιδιά
7
ΣΧΕΔΙΑΣΜΟΣ ΑΛΓΟΡΙΘΜΟΥ
ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ
Ο αλγόριθμος κατασκευής σωρού παίρνει σαν είσοδο μια
δομή σωρού L και δίνει σαν έξοδο ένα σωρό
Ο αλγόριθμος κατασκευής σωρού χρησιμοποιεί ως
υποαλγόριθμο τον αλγόριθμο συμπλήρωσης σωρού που
παίρνει σαν είσοδο μια δομή σωρού όπου τα παιδιά της
ρίζας είναι σωροί και δίνει σαν έξοδο ένα σωρό
8
ΒΗΜΑΤΑ
Ο αλγόριθμος κατασκευής σωρού επισκέπτεται τους
εσωτερικούς κόμβους του δέντρου εισόδου από επίπεδο σε
επίπεδο και σε κάθε επίπεδο από αριστερά προς τα δεξιά
Η επίσκεψη ξεκινά από το προτελευταίο επίπεδο προς τα
υψηλότερα επίπεδα
Σε κάθε εσωτερικό κόμβο ενεργοποιείται ο αλγόριθμος
συμπλήρωσης σωρού για το δέντρο που έχει ρίζα τον
κόμβο αυτό
9
ΑΛΓΟΡΙΘΜΟΣ ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ-ΚΣ
Είσοδος Δομή σωρού L με n κόμβους
Έξοδος Σωρός
Ψευδοκώδικας
m1=2d
for m=d-1 downto 0 do
k=m
while 2klt=n and kltm1 do
κλήση αλγόριθμου σσ(rkn) k=k+1
end while
m1=2m
end for
nd log
10
ΑΛΓΟΡΙΘΜΟΣ ΣΥΜΠΛΗΡΩΣΗΣ ΣΩΡΟΥ-
ΣΣ(rkn)
Είσοδος Δομή σωρού με δείκτη ρίζας r και n στοιχεία όπου καθένα από τα υποδέντρα της ρίζας είναι σωρός
Έξοδος Σωρός
Ψευδοκώδικας x=L(r)
rleft=2r
while rleft lt= n do
max=rleft
rright=rleft+1
if rrightlt=n and L(rright)gt=L(rleft) then max=rright
if xltL(max) then do
L(r)=L(max)
r=max
rleft=2max
end if
end while
L(r)=x
11
ΠΑΡΑΔΕΙΓΜΑ 14
Πρόβλημα Να εφαρμοστεί ο αλγόριθμος κατασκευής σωρού για τη λίστα
L=[101318289381948392328]
Απάντηση
1 Μετατρέπουμε τη λίστα L σε δομή σωρού
10
13 18
28 9 38 19
48 39 23 28
12
ΠΑΡΑΔΕΙΓΜΑ 24
2 Ξεκινούμε από το προτελευταίο επίπεδο d-1=2 Καλούμε τον αλγόριθμο σσ για
το υποδέντρο με ρίζα το 28 και στη συνέχεια για το υποδέντρο με ρίζα το 9
Οπότε
28
48 39
48
28 39
9
23 28
28
23 9
10
13 18
48 28 38 19
28 39 23 9
13
ΠΑΡΑΔΕΙΓΜΑ 34
3 Πηγαίνουμε σε επίπεδο 1 και καλούμε τον αλγόριθμο σσ για το υποδέντρο με ρίζα το 13 και στη συνέχεια για το υποδέντρο με ρίζα το 18
Οπότε
13
48 28
28 39 23 9
48
39 28
28 13 23 9
18
38 19
38
18 19
10
48 38
39 28 18 19
28 13 23 9
14
ΠΑΡΑΔΕΙΓΜΑ 44
4 Πηγαίνουμε σε επίπεδο 0 και καλούμε τον αλγόριθμο σσ για τη ρίζα με
τον αριθμό 10
48
39 38
28 28 18 19
10 13 23 9
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
5
ΠΑΡΑΔΕΙΓΜΑ
Αν L=[5 6 7 9 4 3 0 1] τότε η δομή σωρού είναι
5
6 7
9 4 3 0
1
6
ΣΩΡΟΣ - HEAP
Ορισμός
Σωρός ονομάζεται ένα δέντρο στους κόμβους του οποίου αντιστοιχούν
αριθμοί από μια λίστα L και είναι δομή σωρού με την επιπλέον ιδιότητα ο
αριθμός που αντιστοιχεί σε έναν κόμβο να μην είναι μικρότερος από τους
αριθμούς που αντιστοιχούν στα παιδία του αν ο κόμβος έχει παιδιά
7
ΣΧΕΔΙΑΣΜΟΣ ΑΛΓΟΡΙΘΜΟΥ
ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ
Ο αλγόριθμος κατασκευής σωρού παίρνει σαν είσοδο μια
δομή σωρού L και δίνει σαν έξοδο ένα σωρό
Ο αλγόριθμος κατασκευής σωρού χρησιμοποιεί ως
υποαλγόριθμο τον αλγόριθμο συμπλήρωσης σωρού που
παίρνει σαν είσοδο μια δομή σωρού όπου τα παιδιά της
ρίζας είναι σωροί και δίνει σαν έξοδο ένα σωρό
8
ΒΗΜΑΤΑ
Ο αλγόριθμος κατασκευής σωρού επισκέπτεται τους
εσωτερικούς κόμβους του δέντρου εισόδου από επίπεδο σε
επίπεδο και σε κάθε επίπεδο από αριστερά προς τα δεξιά
Η επίσκεψη ξεκινά από το προτελευταίο επίπεδο προς τα
υψηλότερα επίπεδα
Σε κάθε εσωτερικό κόμβο ενεργοποιείται ο αλγόριθμος
συμπλήρωσης σωρού για το δέντρο που έχει ρίζα τον
κόμβο αυτό
9
ΑΛΓΟΡΙΘΜΟΣ ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ-ΚΣ
Είσοδος Δομή σωρού L με n κόμβους
Έξοδος Σωρός
Ψευδοκώδικας
m1=2d
for m=d-1 downto 0 do
k=m
while 2klt=n and kltm1 do
κλήση αλγόριθμου σσ(rkn) k=k+1
end while
m1=2m
end for
nd log
10
ΑΛΓΟΡΙΘΜΟΣ ΣΥΜΠΛΗΡΩΣΗΣ ΣΩΡΟΥ-
ΣΣ(rkn)
Είσοδος Δομή σωρού με δείκτη ρίζας r και n στοιχεία όπου καθένα από τα υποδέντρα της ρίζας είναι σωρός
Έξοδος Σωρός
Ψευδοκώδικας x=L(r)
rleft=2r
while rleft lt= n do
max=rleft
rright=rleft+1
if rrightlt=n and L(rright)gt=L(rleft) then max=rright
if xltL(max) then do
L(r)=L(max)
r=max
rleft=2max
end if
end while
L(r)=x
11
ΠΑΡΑΔΕΙΓΜΑ 14
Πρόβλημα Να εφαρμοστεί ο αλγόριθμος κατασκευής σωρού για τη λίστα
L=[101318289381948392328]
Απάντηση
1 Μετατρέπουμε τη λίστα L σε δομή σωρού
10
13 18
28 9 38 19
48 39 23 28
12
ΠΑΡΑΔΕΙΓΜΑ 24
2 Ξεκινούμε από το προτελευταίο επίπεδο d-1=2 Καλούμε τον αλγόριθμο σσ για
το υποδέντρο με ρίζα το 28 και στη συνέχεια για το υποδέντρο με ρίζα το 9
Οπότε
28
48 39
48
28 39
9
23 28
28
23 9
10
13 18
48 28 38 19
28 39 23 9
13
ΠΑΡΑΔΕΙΓΜΑ 34
3 Πηγαίνουμε σε επίπεδο 1 και καλούμε τον αλγόριθμο σσ για το υποδέντρο με ρίζα το 13 και στη συνέχεια για το υποδέντρο με ρίζα το 18
Οπότε
13
48 28
28 39 23 9
48
39 28
28 13 23 9
18
38 19
38
18 19
10
48 38
39 28 18 19
28 13 23 9
14
ΠΑΡΑΔΕΙΓΜΑ 44
4 Πηγαίνουμε σε επίπεδο 0 και καλούμε τον αλγόριθμο σσ για τη ρίζα με
τον αριθμό 10
48
39 38
28 28 18 19
10 13 23 9
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
6
ΣΩΡΟΣ - HEAP
Ορισμός
Σωρός ονομάζεται ένα δέντρο στους κόμβους του οποίου αντιστοιχούν
αριθμοί από μια λίστα L και είναι δομή σωρού με την επιπλέον ιδιότητα ο
αριθμός που αντιστοιχεί σε έναν κόμβο να μην είναι μικρότερος από τους
αριθμούς που αντιστοιχούν στα παιδία του αν ο κόμβος έχει παιδιά
7
ΣΧΕΔΙΑΣΜΟΣ ΑΛΓΟΡΙΘΜΟΥ
ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ
Ο αλγόριθμος κατασκευής σωρού παίρνει σαν είσοδο μια
δομή σωρού L και δίνει σαν έξοδο ένα σωρό
Ο αλγόριθμος κατασκευής σωρού χρησιμοποιεί ως
υποαλγόριθμο τον αλγόριθμο συμπλήρωσης σωρού που
παίρνει σαν είσοδο μια δομή σωρού όπου τα παιδιά της
ρίζας είναι σωροί και δίνει σαν έξοδο ένα σωρό
8
ΒΗΜΑΤΑ
Ο αλγόριθμος κατασκευής σωρού επισκέπτεται τους
εσωτερικούς κόμβους του δέντρου εισόδου από επίπεδο σε
επίπεδο και σε κάθε επίπεδο από αριστερά προς τα δεξιά
Η επίσκεψη ξεκινά από το προτελευταίο επίπεδο προς τα
υψηλότερα επίπεδα
Σε κάθε εσωτερικό κόμβο ενεργοποιείται ο αλγόριθμος
συμπλήρωσης σωρού για το δέντρο που έχει ρίζα τον
κόμβο αυτό
9
ΑΛΓΟΡΙΘΜΟΣ ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ-ΚΣ
Είσοδος Δομή σωρού L με n κόμβους
Έξοδος Σωρός
Ψευδοκώδικας
m1=2d
for m=d-1 downto 0 do
k=m
while 2klt=n and kltm1 do
κλήση αλγόριθμου σσ(rkn) k=k+1
end while
m1=2m
end for
nd log
10
ΑΛΓΟΡΙΘΜΟΣ ΣΥΜΠΛΗΡΩΣΗΣ ΣΩΡΟΥ-
ΣΣ(rkn)
Είσοδος Δομή σωρού με δείκτη ρίζας r και n στοιχεία όπου καθένα από τα υποδέντρα της ρίζας είναι σωρός
Έξοδος Σωρός
Ψευδοκώδικας x=L(r)
rleft=2r
while rleft lt= n do
max=rleft
rright=rleft+1
if rrightlt=n and L(rright)gt=L(rleft) then max=rright
if xltL(max) then do
L(r)=L(max)
r=max
rleft=2max
end if
end while
L(r)=x
11
ΠΑΡΑΔΕΙΓΜΑ 14
Πρόβλημα Να εφαρμοστεί ο αλγόριθμος κατασκευής σωρού για τη λίστα
L=[101318289381948392328]
Απάντηση
1 Μετατρέπουμε τη λίστα L σε δομή σωρού
10
13 18
28 9 38 19
48 39 23 28
12
ΠΑΡΑΔΕΙΓΜΑ 24
2 Ξεκινούμε από το προτελευταίο επίπεδο d-1=2 Καλούμε τον αλγόριθμο σσ για
το υποδέντρο με ρίζα το 28 και στη συνέχεια για το υποδέντρο με ρίζα το 9
Οπότε
28
48 39
48
28 39
9
23 28
28
23 9
10
13 18
48 28 38 19
28 39 23 9
13
ΠΑΡΑΔΕΙΓΜΑ 34
3 Πηγαίνουμε σε επίπεδο 1 και καλούμε τον αλγόριθμο σσ για το υποδέντρο με ρίζα το 13 και στη συνέχεια για το υποδέντρο με ρίζα το 18
Οπότε
13
48 28
28 39 23 9
48
39 28
28 13 23 9
18
38 19
38
18 19
10
48 38
39 28 18 19
28 13 23 9
14
ΠΑΡΑΔΕΙΓΜΑ 44
4 Πηγαίνουμε σε επίπεδο 0 και καλούμε τον αλγόριθμο σσ για τη ρίζα με
τον αριθμό 10
48
39 38
28 28 18 19
10 13 23 9
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
7
ΣΧΕΔΙΑΣΜΟΣ ΑΛΓΟΡΙΘΜΟΥ
ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ
Ο αλγόριθμος κατασκευής σωρού παίρνει σαν είσοδο μια
δομή σωρού L και δίνει σαν έξοδο ένα σωρό
Ο αλγόριθμος κατασκευής σωρού χρησιμοποιεί ως
υποαλγόριθμο τον αλγόριθμο συμπλήρωσης σωρού που
παίρνει σαν είσοδο μια δομή σωρού όπου τα παιδιά της
ρίζας είναι σωροί και δίνει σαν έξοδο ένα σωρό
8
ΒΗΜΑΤΑ
Ο αλγόριθμος κατασκευής σωρού επισκέπτεται τους
εσωτερικούς κόμβους του δέντρου εισόδου από επίπεδο σε
επίπεδο και σε κάθε επίπεδο από αριστερά προς τα δεξιά
Η επίσκεψη ξεκινά από το προτελευταίο επίπεδο προς τα
υψηλότερα επίπεδα
Σε κάθε εσωτερικό κόμβο ενεργοποιείται ο αλγόριθμος
συμπλήρωσης σωρού για το δέντρο που έχει ρίζα τον
κόμβο αυτό
9
ΑΛΓΟΡΙΘΜΟΣ ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ-ΚΣ
Είσοδος Δομή σωρού L με n κόμβους
Έξοδος Σωρός
Ψευδοκώδικας
m1=2d
for m=d-1 downto 0 do
k=m
while 2klt=n and kltm1 do
κλήση αλγόριθμου σσ(rkn) k=k+1
end while
m1=2m
end for
nd log
10
ΑΛΓΟΡΙΘΜΟΣ ΣΥΜΠΛΗΡΩΣΗΣ ΣΩΡΟΥ-
ΣΣ(rkn)
Είσοδος Δομή σωρού με δείκτη ρίζας r και n στοιχεία όπου καθένα από τα υποδέντρα της ρίζας είναι σωρός
Έξοδος Σωρός
Ψευδοκώδικας x=L(r)
rleft=2r
while rleft lt= n do
max=rleft
rright=rleft+1
if rrightlt=n and L(rright)gt=L(rleft) then max=rright
if xltL(max) then do
L(r)=L(max)
r=max
rleft=2max
end if
end while
L(r)=x
11
ΠΑΡΑΔΕΙΓΜΑ 14
Πρόβλημα Να εφαρμοστεί ο αλγόριθμος κατασκευής σωρού για τη λίστα
L=[101318289381948392328]
Απάντηση
1 Μετατρέπουμε τη λίστα L σε δομή σωρού
10
13 18
28 9 38 19
48 39 23 28
12
ΠΑΡΑΔΕΙΓΜΑ 24
2 Ξεκινούμε από το προτελευταίο επίπεδο d-1=2 Καλούμε τον αλγόριθμο σσ για
το υποδέντρο με ρίζα το 28 και στη συνέχεια για το υποδέντρο με ρίζα το 9
Οπότε
28
48 39
48
28 39
9
23 28
28
23 9
10
13 18
48 28 38 19
28 39 23 9
13
ΠΑΡΑΔΕΙΓΜΑ 34
3 Πηγαίνουμε σε επίπεδο 1 και καλούμε τον αλγόριθμο σσ για το υποδέντρο με ρίζα το 13 και στη συνέχεια για το υποδέντρο με ρίζα το 18
Οπότε
13
48 28
28 39 23 9
48
39 28
28 13 23 9
18
38 19
38
18 19
10
48 38
39 28 18 19
28 13 23 9
14
ΠΑΡΑΔΕΙΓΜΑ 44
4 Πηγαίνουμε σε επίπεδο 0 και καλούμε τον αλγόριθμο σσ για τη ρίζα με
τον αριθμό 10
48
39 38
28 28 18 19
10 13 23 9
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
8
ΒΗΜΑΤΑ
Ο αλγόριθμος κατασκευής σωρού επισκέπτεται τους
εσωτερικούς κόμβους του δέντρου εισόδου από επίπεδο σε
επίπεδο και σε κάθε επίπεδο από αριστερά προς τα δεξιά
Η επίσκεψη ξεκινά από το προτελευταίο επίπεδο προς τα
υψηλότερα επίπεδα
Σε κάθε εσωτερικό κόμβο ενεργοποιείται ο αλγόριθμος
συμπλήρωσης σωρού για το δέντρο που έχει ρίζα τον
κόμβο αυτό
9
ΑΛΓΟΡΙΘΜΟΣ ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ-ΚΣ
Είσοδος Δομή σωρού L με n κόμβους
Έξοδος Σωρός
Ψευδοκώδικας
m1=2d
for m=d-1 downto 0 do
k=m
while 2klt=n and kltm1 do
κλήση αλγόριθμου σσ(rkn) k=k+1
end while
m1=2m
end for
nd log
10
ΑΛΓΟΡΙΘΜΟΣ ΣΥΜΠΛΗΡΩΣΗΣ ΣΩΡΟΥ-
ΣΣ(rkn)
Είσοδος Δομή σωρού με δείκτη ρίζας r και n στοιχεία όπου καθένα από τα υποδέντρα της ρίζας είναι σωρός
Έξοδος Σωρός
Ψευδοκώδικας x=L(r)
rleft=2r
while rleft lt= n do
max=rleft
rright=rleft+1
if rrightlt=n and L(rright)gt=L(rleft) then max=rright
if xltL(max) then do
L(r)=L(max)
r=max
rleft=2max
end if
end while
L(r)=x
11
ΠΑΡΑΔΕΙΓΜΑ 14
Πρόβλημα Να εφαρμοστεί ο αλγόριθμος κατασκευής σωρού για τη λίστα
L=[101318289381948392328]
Απάντηση
1 Μετατρέπουμε τη λίστα L σε δομή σωρού
10
13 18
28 9 38 19
48 39 23 28
12
ΠΑΡΑΔΕΙΓΜΑ 24
2 Ξεκινούμε από το προτελευταίο επίπεδο d-1=2 Καλούμε τον αλγόριθμο σσ για
το υποδέντρο με ρίζα το 28 και στη συνέχεια για το υποδέντρο με ρίζα το 9
Οπότε
28
48 39
48
28 39
9
23 28
28
23 9
10
13 18
48 28 38 19
28 39 23 9
13
ΠΑΡΑΔΕΙΓΜΑ 34
3 Πηγαίνουμε σε επίπεδο 1 και καλούμε τον αλγόριθμο σσ για το υποδέντρο με ρίζα το 13 και στη συνέχεια για το υποδέντρο με ρίζα το 18
Οπότε
13
48 28
28 39 23 9
48
39 28
28 13 23 9
18
38 19
38
18 19
10
48 38
39 28 18 19
28 13 23 9
14
ΠΑΡΑΔΕΙΓΜΑ 44
4 Πηγαίνουμε σε επίπεδο 0 και καλούμε τον αλγόριθμο σσ για τη ρίζα με
τον αριθμό 10
48
39 38
28 28 18 19
10 13 23 9
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
9
ΑΛΓΟΡΙΘΜΟΣ ΚΑΤΑΣΚΕΥΗΣ ΣΩΡΟΥ-ΚΣ
Είσοδος Δομή σωρού L με n κόμβους
Έξοδος Σωρός
Ψευδοκώδικας
m1=2d
for m=d-1 downto 0 do
k=m
while 2klt=n and kltm1 do
κλήση αλγόριθμου σσ(rkn) k=k+1
end while
m1=2m
end for
nd log
10
ΑΛΓΟΡΙΘΜΟΣ ΣΥΜΠΛΗΡΩΣΗΣ ΣΩΡΟΥ-
ΣΣ(rkn)
Είσοδος Δομή σωρού με δείκτη ρίζας r και n στοιχεία όπου καθένα από τα υποδέντρα της ρίζας είναι σωρός
Έξοδος Σωρός
Ψευδοκώδικας x=L(r)
rleft=2r
while rleft lt= n do
max=rleft
rright=rleft+1
if rrightlt=n and L(rright)gt=L(rleft) then max=rright
if xltL(max) then do
L(r)=L(max)
r=max
rleft=2max
end if
end while
L(r)=x
11
ΠΑΡΑΔΕΙΓΜΑ 14
Πρόβλημα Να εφαρμοστεί ο αλγόριθμος κατασκευής σωρού για τη λίστα
L=[101318289381948392328]
Απάντηση
1 Μετατρέπουμε τη λίστα L σε δομή σωρού
10
13 18
28 9 38 19
48 39 23 28
12
ΠΑΡΑΔΕΙΓΜΑ 24
2 Ξεκινούμε από το προτελευταίο επίπεδο d-1=2 Καλούμε τον αλγόριθμο σσ για
το υποδέντρο με ρίζα το 28 και στη συνέχεια για το υποδέντρο με ρίζα το 9
Οπότε
28
48 39
48
28 39
9
23 28
28
23 9
10
13 18
48 28 38 19
28 39 23 9
13
ΠΑΡΑΔΕΙΓΜΑ 34
3 Πηγαίνουμε σε επίπεδο 1 και καλούμε τον αλγόριθμο σσ για το υποδέντρο με ρίζα το 13 και στη συνέχεια για το υποδέντρο με ρίζα το 18
Οπότε
13
48 28
28 39 23 9
48
39 28
28 13 23 9
18
38 19
38
18 19
10
48 38
39 28 18 19
28 13 23 9
14
ΠΑΡΑΔΕΙΓΜΑ 44
4 Πηγαίνουμε σε επίπεδο 0 και καλούμε τον αλγόριθμο σσ για τη ρίζα με
τον αριθμό 10
48
39 38
28 28 18 19
10 13 23 9
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
10
ΑΛΓΟΡΙΘΜΟΣ ΣΥΜΠΛΗΡΩΣΗΣ ΣΩΡΟΥ-
ΣΣ(rkn)
Είσοδος Δομή σωρού με δείκτη ρίζας r και n στοιχεία όπου καθένα από τα υποδέντρα της ρίζας είναι σωρός
Έξοδος Σωρός
Ψευδοκώδικας x=L(r)
rleft=2r
while rleft lt= n do
max=rleft
rright=rleft+1
if rrightlt=n and L(rright)gt=L(rleft) then max=rright
if xltL(max) then do
L(r)=L(max)
r=max
rleft=2max
end if
end while
L(r)=x
11
ΠΑΡΑΔΕΙΓΜΑ 14
Πρόβλημα Να εφαρμοστεί ο αλγόριθμος κατασκευής σωρού για τη λίστα
L=[101318289381948392328]
Απάντηση
1 Μετατρέπουμε τη λίστα L σε δομή σωρού
10
13 18
28 9 38 19
48 39 23 28
12
ΠΑΡΑΔΕΙΓΜΑ 24
2 Ξεκινούμε από το προτελευταίο επίπεδο d-1=2 Καλούμε τον αλγόριθμο σσ για
το υποδέντρο με ρίζα το 28 και στη συνέχεια για το υποδέντρο με ρίζα το 9
Οπότε
28
48 39
48
28 39
9
23 28
28
23 9
10
13 18
48 28 38 19
28 39 23 9
13
ΠΑΡΑΔΕΙΓΜΑ 34
3 Πηγαίνουμε σε επίπεδο 1 και καλούμε τον αλγόριθμο σσ για το υποδέντρο με ρίζα το 13 και στη συνέχεια για το υποδέντρο με ρίζα το 18
Οπότε
13
48 28
28 39 23 9
48
39 28
28 13 23 9
18
38 19
38
18 19
10
48 38
39 28 18 19
28 13 23 9
14
ΠΑΡΑΔΕΙΓΜΑ 44
4 Πηγαίνουμε σε επίπεδο 0 και καλούμε τον αλγόριθμο σσ για τη ρίζα με
τον αριθμό 10
48
39 38
28 28 18 19
10 13 23 9
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
11
ΠΑΡΑΔΕΙΓΜΑ 14
Πρόβλημα Να εφαρμοστεί ο αλγόριθμος κατασκευής σωρού για τη λίστα
L=[101318289381948392328]
Απάντηση
1 Μετατρέπουμε τη λίστα L σε δομή σωρού
10
13 18
28 9 38 19
48 39 23 28
12
ΠΑΡΑΔΕΙΓΜΑ 24
2 Ξεκινούμε από το προτελευταίο επίπεδο d-1=2 Καλούμε τον αλγόριθμο σσ για
το υποδέντρο με ρίζα το 28 και στη συνέχεια για το υποδέντρο με ρίζα το 9
Οπότε
28
48 39
48
28 39
9
23 28
28
23 9
10
13 18
48 28 38 19
28 39 23 9
13
ΠΑΡΑΔΕΙΓΜΑ 34
3 Πηγαίνουμε σε επίπεδο 1 και καλούμε τον αλγόριθμο σσ για το υποδέντρο με ρίζα το 13 και στη συνέχεια για το υποδέντρο με ρίζα το 18
Οπότε
13
48 28
28 39 23 9
48
39 28
28 13 23 9
18
38 19
38
18 19
10
48 38
39 28 18 19
28 13 23 9
14
ΠΑΡΑΔΕΙΓΜΑ 44
4 Πηγαίνουμε σε επίπεδο 0 και καλούμε τον αλγόριθμο σσ για τη ρίζα με
τον αριθμό 10
48
39 38
28 28 18 19
10 13 23 9
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
12
ΠΑΡΑΔΕΙΓΜΑ 24
2 Ξεκινούμε από το προτελευταίο επίπεδο d-1=2 Καλούμε τον αλγόριθμο σσ για
το υποδέντρο με ρίζα το 28 και στη συνέχεια για το υποδέντρο με ρίζα το 9
Οπότε
28
48 39
48
28 39
9
23 28
28
23 9
10
13 18
48 28 38 19
28 39 23 9
13
ΠΑΡΑΔΕΙΓΜΑ 34
3 Πηγαίνουμε σε επίπεδο 1 και καλούμε τον αλγόριθμο σσ για το υποδέντρο με ρίζα το 13 και στη συνέχεια για το υποδέντρο με ρίζα το 18
Οπότε
13
48 28
28 39 23 9
48
39 28
28 13 23 9
18
38 19
38
18 19
10
48 38
39 28 18 19
28 13 23 9
14
ΠΑΡΑΔΕΙΓΜΑ 44
4 Πηγαίνουμε σε επίπεδο 0 και καλούμε τον αλγόριθμο σσ για τη ρίζα με
τον αριθμό 10
48
39 38
28 28 18 19
10 13 23 9
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
13
ΠΑΡΑΔΕΙΓΜΑ 34
3 Πηγαίνουμε σε επίπεδο 1 και καλούμε τον αλγόριθμο σσ για το υποδέντρο με ρίζα το 13 και στη συνέχεια για το υποδέντρο με ρίζα το 18
Οπότε
13
48 28
28 39 23 9
48
39 28
28 13 23 9
18
38 19
38
18 19
10
48 38
39 28 18 19
28 13 23 9
14
ΠΑΡΑΔΕΙΓΜΑ 44
4 Πηγαίνουμε σε επίπεδο 0 και καλούμε τον αλγόριθμο σσ για τη ρίζα με
τον αριθμό 10
48
39 38
28 28 18 19
10 13 23 9
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
14
ΠΑΡΑΔΕΙΓΜΑ 44
4 Πηγαίνουμε σε επίπεδο 0 και καλούμε τον αλγόριθμο σσ για τη ρίζα με
τον αριθμό 10
48
39 38
28 28 18 19
10 13 23 9
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 12
Βήματα
1 Ο HeapSort εφαρμόζει πρώτα τον αλγόριθμο κατασκευής σωρού στην αρχική λίστα L Τότε στη ρίζα τοποθετείται το μέγιστο στοιχείο της λίστας
2 Το στοιχείο που βρίσκεται στη ρίζα του σωρού το παίρνουμε και το βάζουμε στο τέλος της L
3 Στην κενή θέση τοποθετείται το τελευταίο φύλλο (το δεξιότερο στο τελευταίο επίπεδο) που αφαιρείται από δέντρο Ο σωρός γίνεται δομή σωρού
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
16
ΑΛΓΟΡΙΘΜΟΣ HEAPSORT ΓΙΑ
ΤΑΞΙΝΟΜΗΣΗ ΛΙΣΤΑΣ 22
4 Καλείται ο αλγόριθμος συμπλήρωσης σωρού οπότε η δομή σωρού γίνεται πάλι σωρός με το μεγαλύτερο στοιχείο στη ρίζα Το στοιχείο αυτό τοποθετείται στη θέση n-1 της L και στη ρίζα μπαίνει πάλι τελευταίο φύλλο
5 Επαναλαμβάνουμε διαδικασία μέχρι τέλος στοιχείων λίστας
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
17
ΨΕΥΔΟΚΩΔΙΚΑΣ HEAPSORT
κλήση αλγορίθμου κατασκευής σωρού κσ
for i=n to 2 do
a=L(i)
κλήση αλγορίθμου συμπλήρωσης σωρού σσ(11i-1)
L(i)=a
end for
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
18
ΠΑΡΑΔΕΙΓΜΑ 15
Πρόβλημα Εφαρμόστε τον αλγόριθμο HeapSort για να ταξινομήσετε τη λίστα
L=[131114121516]
Απάντηση Η δομή σωρού στην οποία αντιστοιχεί η λίστα L είναι
Εφαρμόζουμε τον αλγόριθμο κατασκευής σωρού και παίρνουμε
13
11 14
12 15 16
16
15 14
12 11 13
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
19
ΠΑΡΑΔΕΙΓΜΑ 25
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(6) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[131514121116]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
13
15 14
12 11
15
13 14
12 11
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
20
ΠΑΡΑΔΕΙΓΜΑ 35
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(5) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111314121516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
11
13 14
12
14
13 11
12
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
21
ΠΑΡΑΔΕΙΓΜΑ 45
13 11
12
12 11
13
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(4) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121311141516]
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(3) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[121113141516]
12
11
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
22
ΠΑΡΑΔΕΙΓΜΑ 55
11
12
Εφαρμόζουμε τον αλγόριθμο συμπλήρωσης σωρού στο νέο δέντρο
Τοποθετώ το στοιχείο στη ρίζα στη θέση L(2) και στη ρίζα βάζω το
τελευταίο φύλλο
L=[111213141516]
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
23
ΧΡΗΜΑΤΟΔΟΤΗΣΗ
Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του
εκπαιδευτικού έργου του διδάσκοντα
Το έργο laquoΑνοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο
Πατρώνraquo έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του
εκπαιδευτικού υλικού
Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος
laquoΕκπαίδευση και Δια Βίου Μάθησηraquo και συγχρηματοδοτείται από την
Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς
πόρους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
24
ΣΗΜΕΙΩΜΑ ΙΣΤΟΥΡΙΚΟΥ ΕΚΔΟΣΕΩΝ ΕΡΓΟΥ
Το παρόν έργο αποτελεί την έκδοση 10
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
25
ΣΗΜΕΙΩΜΑ ΑΝΑΦΟΡΑΣ
Copyright Πανεπιστήμιο Πατρών Δημήτριος Κουκόπουλος laquoΣχεδίαση και
Ανάλυση Αλγορίθμων ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ
ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ndash ΑΛΓΟΡΙΘΜΟΣ
HEAPSORTraquo Έκδοση 10 Πάτρα 2015 Διαθέσιμο από τη δικτυακή
διεύθυνση httpseclassupatrasgrcoursesCULTURE109
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
26
ΣΗΜΕΙΩΜΑ ΑΔΕΙΟΔΟΤΗΣΗΣ
Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons
Αναφορά Μη Εμπορική Χρήση Παρόμοια Διανομή 40 [1] ή μεταγενέστερη
Διεθνής Έκδοση Εξαιρούνται τα αυτοτελή έργα τρίτων πχ φωτογραφίες
διαγράμματα κλπ τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί
με τους όρους χρήσης τους στο laquoΣημείωμα Χρήσης Έργων Τρίτωνraquo
[1] httpcreativecommonsorglicensesby-nc-sa40 Ως Μη Εμπορική ορίζεται η χρήση bull που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του
έργου για το διανομέα του έργου και αδειοδόχο bull που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή
πρόσβαση στο έργο bull που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό
όφελος (πχ διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο
Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση εφόσον αυτό του ζητηθεί
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους
27
ΔΙΑΤΗΡΗΣΗ ΣΗΜΕΙΩΜΑΤΩΝ
Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να
συμπεριλαμβάνει
το Σημείωμα Αναφοράς
το Σημείωμα Αδειοδότησης
τη δήλωση Διατήρησης Σημειωμάτων
το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει)
μαζί με τους συνοδευόμενους υπερσυνδέσμους