Οι ϐασικές πράξεις που ορίζονται για τη δοµή δεδοµένων σωρός, είναι η πράξη της εισαγωγής και η πράξη της διαγραφής ενός στοιχείου.

Σχετικά έγγραφα
Αλγόριθµοι και Πολυπλοκότητα

Ενότητα 7 Ουρές Προτεραιότητας

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

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο

Ουρές προτεραιότητας

Ενότητα 7 Ουρές Προτεραιότητας

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

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

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

Κεφάλαιο 6 Ουρές Προτεραιότητας

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

Ουρά Προτεραιότητας (priority queue)

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

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

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

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

Διδάσκων: Κωνσταντίνος Κώστα

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

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

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Ουρά Προτεραιότητας (priority queue)

Κεφάλαιο 10 Ψηφιακά Λεξικά

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

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

Δομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη

9. Κόκκινα-Μαύρα Δέντρα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Ουρά Προτεραιότητας: Heap

Ουρά Προτεραιότητας: Heap

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

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

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

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

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

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

έντρα ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

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

Εκτενείς Δομές Δεδομένων

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

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

#4. Heaps (σωροί), η ταξινόμηση HeapSort, η δομή std::priority_queue της STL

5 ΔΕΝΤΡΑ (Trees) Σχήµα 5.1 : ενδροειδής αναπαράσταση αρχείων στα Windows. έντρα. \ {root directory} Accessories. Program Files.

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

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

Ισοζυγισµένο έντρο (AVL Tree)

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

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

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης

Δοµές Δεδοµένων. 14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης. Ε. Μαρκάκης

Heapsort Using Multiple Heaps

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

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Σύστημα Πλεονάσματος και Αναπαράσταση Αριθμών Κινητής Υποδιαστολής

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

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

υαδικά δέντρα αναζήτησης

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος Προγραμματιστική Εργασία - 2o Μέρος

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

έντρα Πολλαπλής ιακλάδωσης και (a, b)- έντρα

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

Σύστημα Πλεονάσματος. Αναπαράσταση Πραγματικών Αριθμών. Αριθμητικές Πράξεις σε Αριθμούς Κινητής Υποδιαστολής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ουρές προτεραιότητας Κεφάλαιο 9. Ε. Μαρκάκης Επίκουρος Καθηγητής

AVL-trees C++ implementation

Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Red-Black Δέντρα. Red-Black Δέντρα

Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθμος ταξινόμησης HeapSort

Ακρότατα πίνακα, χωρίς min, max, μόνο με pos

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

Ουρά Προτεραιότητας: Heap

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ: Γ2-Γ3

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Διάλεξη 14: Δέντρα IV - B-Δένδρα

Transcript:

Εργαστήριο 8 Σωρός (Hap) Εισαγωγή Ενα δυαδικό δέντρο ϐάθους N ονοµάζεται πλήρες (compt), όταν έχει όλους τους κόµβους του επιπέδου N συµπληρωµένους. Ενα δυαδικό δέντρο ϐάθους N ονοµάζεται σχεδόν πλήρες ( amost compt), όταν έχει όλους τους κόµβους του επιπέδου N 1 συµπληρωµένους και οι κόµβοι που υπάρχουν στο N-οστό επίπεδο είναι τοποθετηµένοι όσο το δυνατόν πιο αριστερά. Η τοποθέτηση των κόµβων σε ένα σχεδόν πλήρες δυαδικό δέντρο είναι τέτοια που µας επιτρέπει να αριθµήσουµε µε ένα συστηµατικό τρόπο τους κόµβους αυτούς. Αυτή η συστηµατική αρίθµηση (από πάνω προς τα κάτω και από αριστερά προς τα δεξιά κάνει δυνατή την αναπαράσταση ενός σχεδόν πλήρους δυαδικού δέντρου µε τη ϐοήθεια ενός απλού γραµµικού πίνακα, όπως ϕαίνεται στο σχήµα 8.1. (Θεωρούµε ότι το στοιχείο µε ενδείκτη 0 του πίνακα δεν χρησιµοποιείται). Η ϱίζα του σωρού ϐρίσκεται στη ϑέση aay[1] ενώ το αριστερό και δεξιό παιδί ενός στοιχείου στη ϑέση i ϐρίσκονται στις ϑέσεις 2i και 2i + 1 αντίστοιχα. Ο γονέας του κόµβου j είναι ο j/2 (ακέραια διαίρεση). Το εργαστήριο ασχολείται µε την κατασκευή κώδικα για σωρούς (Hap) και ειδικότερα δυαδικούς σωρούς. Ο δυαδικός σωρός είναι µια δοµή δεδοµένων η οποία µπορεί να ϑεωρηθεί ώς ένα δυαδικό δένδρο µε δύο επιπλέον ιδιότητες: Ολα τα επίπεδα του δένδρου εκτός ίσως από το χαµηλότερο είναι πλήρη και αν το τελευταίο επίπεδο δεν είναι πλήρες τότε οι κόµβοι εισάγονται από αριστερά προς τα δεξιά. Τα δεδοµένα κάθε κόµβου είναι µεγαλύτερα ( max hap) (σχήµα 8.2β ) ή µικρότερα (min hap)(σχήµα 8.2α ) από αυτά των παιδιών του. Οι ϐασικές πράξεις που ορίζονται για τη δοµή δεδοµένων σωρός, είναι η πράξη της εισαγωγής και η πράξη της διαγραφής ενός στοιχείου. Εισαγωγή στοιχείου (inst) Η πράξη της εισαγωγής ϕροντίζει ώστε ο σωρός που προκύπτει να έχει το µικρότερο (ή µεγαλύτερο για maxhap) στοιχείο του πάντοτε στην ϱίζα του δέντρου (κορυφή του σωρού). Στο επόµενο σχήµα ϕαίνεται µία σειρά από διαδοχικές πράξεις εισαγωγής στοιχείων οι οποίες δηµιουργούν ένα σωρό. MinHap 1. Οταν εισάγουµε ένα καινούργιο στοιχείο στο σωρό αυτό τοποθετείται στην επόµενη διαθέσιµη ϑέση στο τελευταίο επίπεδο (τελευταία ϑέση του πίνακα). 34

1 D 2 3 A C 4 5 6 7 B F E G 8 9 10 H I J D A C B F E G H I J 1 2 3 4 5 6 7 8 9 10 Σχήµα 8.1: Αναπαράσταση σχεδόν πλήρους δυαδικού δέντρου µε πίνακα (α ) Min Hap (ϐ ) Max Hap Σχήµα 8.2 2. Αν η τιµή του στοιχείου δεν παραβιάζει την ιδιότητα του σωρού (δηλαδή η τιµή του είναι µεγαλύτερη από αυτή του γονέα του) τότε το στοιχείο µένει στη ϑέση του. 3. Σε διαφορετική περίπτωση παιδί και γονέας ανταλλάσσουν ϑέσεις. Αυτή η διαδικασία συνεχίζεται µέχρι το καινούργιο στοιχείο να ϐρει µια ϑέση τέτοια ώστε να ικανοποιείται η ιδιότητα του σωρού. Ετσι κάθε στοιχείο που εισάγεται στο σωρό ϑα πρέπει να διασχίσει ένα µονοπάτι από το ϕύλλο στο οποίο ϐρισκόταν αρχικά µέχρι κάποιον κατάλληλο εσωτερικό κόµβο. Στη χειρότερη περίπτωση το µονοπάτι ϑα είναι ως τη ϱίζα του δέντρου. Η διαδικασία αυτή ονοµάζεται pcoat up ή shift up (σχήµα 8.3). 35

Αντί για διαδοχικά swap, είναι πιό αποδοτικό να χρησιµοποιήσουµε µία τρύπα (έναν άδειο κόµβο), ο οποίος ϑα κάνει τη διαδικασία pcoat up. Στο σηµείο που ϑα σταµατήσει η τρύπα (ικανοποιείται η ιδιότητα του σωρού) ϑα εισάγουµε το στοιχείο (σχήµα 8.4). Ψευδοκώδικας για την εισαγωγή νέου στοιχείου στο (minhap). if (hap is fu ) tminat cuntsiz=cuntsiz+1 ho=cuntsiz whi (ho>1 and x<aay[ho/2]) aay[ho]=aay[ho/2] ho=ho/2 nd whi aay[ho]=x 21 Inst 21 Pcoat up Pcoat up 21 21 Σχήµα 8.3: ιαδικασία εισαγωγής στοιχείων σε ένα σωρό (min Hap) ιαγραφή στοιχείου (mov) Η πράξη διαγραφής αφαιρεί πάντοτε το στοιχείο που ϐρίσκεται στην κορυφή και ϕροντίζει να αναδιατάσσει το σωρό, έτσι ώστε το αµέσως µικρότερο (ή µεγαλύτερο για maxhap) στοιχείο να ϐρεθεί στην κορυφή του σωρού. Η ϱίζα του σωρού εξάγεται και ο σωρός τακτοποιείται ως εξής (σχήµα 8.5): 36

p p < p ho p > Σχήµα 8.4: Εισαγωγή στοιχείου σε min Hap µε τη χρήση τρύπας p Η ϱίζα ανταλλάσσεται µε το τελευταίο ϕύλλο. Η νέα ϱίζα συγκρίνεται µε κάθε παιδί της και αν ένα από αυτά είναι µικρότερο από τη ϱίζα, τότε το ανταλλάσουµε µε αυτή. Συνεχίζουµε τις συγκρίσεις/ανταλλαγές µε τα παιδιά της νέας ϱίζας µέχρι να ϕθάσει σε ένα επίπεδο του δένδρου όπου ϑα είναι µεγαλύτερη από τα αντίστοιχα παιδιά Η διαδικασία ονοµάζεται pcoat down ή shift down. Οπως και στη διαδικασία της εισαγωγής είναι προτιµότερο αντι για διαδοχικά swap, να χρησι- µοποιήσουµς µια τρύπα (έναν άδειο κόµβο) για τη διαδικασία pcoat down (σχήµα 8.6): ηµιουργείται µια τρύπα στη ϱίζα, διαγράφοντας το στοιχείο της ϱίζας Αντιγράφουµε το τελευταίο στοιχείο σε µια προσωρινή µεταβλητή και διαγράφουµε το τελευταίο στοιχείο. Οσο δεν ισχύει η ιδιότητα του σωρού µετακινούµε την τρύπα προς τα κάτω. Στο σηµείου που ϑα σταµατήσει η τρύπα (ικανοποιείται η συνθήκη του σωρού), εισάγουµε το στοιχείο από την προσωρινή µεταβλητή. Hap.java pubic intfac Hap xtnds DataStuctu { //inst itm x in th hap pubic void inst ( Compaab x ) ; // tun and mov th smast itm pubic Compaab dtmin ( ) thows StuctuEmptyExcption ; // tun th smast itm pubic Compaab findmin ( ) thows StuctuEmptyExcption ; } 37

Dt min mnt dt ast nod 21 23 21 23 Rpac by vau of ast nod Pcoat down 21 Pcoat down 23 21 23 Σχήµα 8.5: ιαγραφή στοιχείου από min Hap Ασκηση 8.1 Χρησιµοποιώντας το Hap intfac κατασκευάστε µία κλάση AayMinHap, η οποία ϑα υ- λοποιεί ένα min Hap χρησιµοποιώντας ως αποθηκευτικό χώρο έναν πίνακα. Η ϱίζα του σωρού ϑα ϐρίσκεται στη ϑέση 1 του πίνακα (σχήµα 8.1). Κατασκευάστε τρείς δοµητές: 1. έναν dfaut, pubic AayMinHap( ) 2. και δύο παραµετρικούς pubic AayMinHap( int capacity ) pubic AayMinHap( Compaab [ ] itms ) Σε κάθε κλάση, που δηµιουργείτε καλό είναι να υλοποιείτε και µια µέθοδο pubic Sting tosting(), ώστε να είναι πιό εύκολες οι εκτυπώσεις και τελικά η δοκιµή του κώδικα, που γράφετε. Ασκηση 8.2 Να γράψετε µέθοδο pubic Compaab[ ] HapSot(Compaab[ ] inaay) η οποία να παίρνει ως είσοδο έναν πίνακα και να τον επιστρέφει ταξινοµηµένο µε τη µέθοδο HapSot Για τη µετατροπή ενός πίνακα σε σωρό µπορείτε να χρησιµοποιήσετε τον αλγόριθµο HapBottomUp (σχήµα 8.7, σχήµα 8.8) 38

< min(, ) > > > < Σχήµα 8.6: ιαγραφή στοιχείου από min Hap µε τη χρήση τρύπας 1. Stat at th v containing th ast non-af nod (i.., aay[n/2], wh n is th aay siz). 2. Mak th subt ootd at th ast non-af nod into a hap by invoking pcoatdown. 3. Mov in th cunt v fom ight to ft, making ach subt, ootd at ach ncountd nod, into a hap by invoking pcoatdown. 4. If th vs a not finishd, mov to a ow v thn go to stp 3. 5. Stop. 65 32 26 At ach stag convt th highightd t into a MinHap by pcoating down stating at th oot of th highightd t. 65 32 26 65 26 32 26 26 65 32 65 32 Σχήµα 8.7: Μετατροπή πίνακα σε min Hap 39

Σχήµα 8.8: Αλγόριθµος BottomUp 40