Διαδικασιακός Προγραμματισμός

Σχετικά έγγραφα
Διαδικασιακός Προγραμματισμός

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

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

Διαδικασιακός Προγραμματισμός

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

Διαδικασιακός Προγραμματισμός

Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Πίνακες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο

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

Πληροφορική 2. Αλγόριθμοι

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

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

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Διαδικασιακός Προγραμματισμός

Διάλεξη 17η: Ταξινόμηση και Αναζήτηση

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

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

Εισαγωγή στον δομημένο προγραμματισμό

Διαδικασιακός Προγραμματισμός

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

Διαδικασιακός Προγραμματισμός

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

Αλγόριθμοι Αναζήτησης. (AeppAcademy.com)

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

3 ΑΝΑ ΡΟΜΗ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ. n! = 1*2*3*..(n-1)*n. n! = 1 αν n = 0, = n*(n-1)! αν n > ΑΝΑ ΡΟΜΗ Εισαγωγή

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

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

ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΜΟΝΟΔΙΑΣΤΑΤΩΝ ΚΑΙ ΔΙΣΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ ΟΙ ΠΙΟ ΣΗΜΑΝΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ

ΘΕΜΑ Α. Μονάδες 10 Α2.

Α.1 Τι γνωρίζετε για τον διερμηνευτή, τον μεταγλωττιστή και ποιες οι διαφορές τους. 15 ΜΟΝΑΔΕΣ

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. ii) Πόσες φορές θα εκτελεστεί η εντολή ΔΙΑΒΑΣΕ Α[μ,λ] στον αλγόριθμο της προηγούμενης ερώτησης; α) 35 β) 12 γ) 20

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

ΠΡΟΣ: Τηλέφωνο: Ινστιτούτο Εκπαιδευτικής Πολιτικής ΚΟΙΝ.:

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση:

1. Δεν μπορεί να γίνει κλήση μίας διαδικασίας μέσα από μία συνάρτηση.

Διαδικασιακός Προγραμματισμός

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

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

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

Θέματα Προγραμματισμού Η/Υ

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

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

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. ii) Πόσες φορές θα εκτελεστεί η εντολή ΔΙΑΒΑΣΕ Α[μ,λ] στον αλγόριθμο της προηγούμενης ερώτησης; α) 35 β) 12 γ) 20

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

Διαδικασιακός Προγραμματισμός

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

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

1. Μία συνάρτηση δεν μπορεί να έχει παραπάνω από μία παραμέτρους.

Προγραμματισμός Η/Υ. Αναζήτηση & Ταξινόμηση. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

ΘΕΜΑ Α. Μονάδες 10 Α2.

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

Διαδικασιακός Προγραμματισμός

Ενδεικτικές Ερωτήσεις Θεωρίας

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Προγραμματισμός Ι. Ενότητα 8 : Πίνακες IΙ. Αλέξανδρος Τζάλλας

Δομημένος Προγραμματισμός (ΤΛ1006)

1. Η χειρότερη περίπτωση είναι όταν γίνου 10 επαναλήψεις, δηλαδή για n = 0.

3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012

ΕΚΠΑΙΔΕΥΤΗΡΙΑ ΝΕΑ ΠΑΙΔΕΙΑ

1. Δεν μπορεί να γίνει κλήση μίας διαδικασίας μέσα από μία συνάρτηση.

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

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

Προτεινόμενος τρόπος διδασκαλίας του μαθήματος με ενδεικτικό χρονοπρογραμματισμό. Α/Α Ενότητες Περιγραφή Ώρες 1 Εισαγωγικό μάθημα 1

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

Ασκήσεις στα υποπρογράμματα

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

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

Μεθόδων Επίλυσης Προβλημάτων

ΘΕ16: Αναζήτηση δυαδική αναζήτηση

Πανεπιστήμιο Ιωαννίνων Τμήμα Μηχανικών Η/Υ και Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2013

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

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

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

Bubble Hack Οπτικοποίηση του αλγορίθμου ταξινόμησης Bubble Sort στο Scratch

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00

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

Τελικό διαγώνισμα. Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΘΕΜΑ Α

Επαναληπτικό Διαγώνισμα

Πληροφορική ΙΙ Ενότητα 1

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΡΤΙΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 6 (ΕΞΙ)

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 2 : Αλγόριθμοι. Δρ. Γκόγκος Χρήστος

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

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

Αναζήτηση. Στην λειτουργία της αναζήτησης εξακριβώνεται η παρουσία ή η απουσία ενός δεδομένου σε μια δομή δεδομένων.

Προτεινόμενα Θέματα ΑΕΠΠ

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

Δομές Δεδομένων. Τι είναι η δομή δεδομένων; Έστω η ακολουθία αριθμών: 8, 10,17,19,22,5,12 Λογικό Επίπεδο. Φυσικό Επίπεδο RAM. Ταξινομημένος.

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016

Transcript:

Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 12 η Αναζήτηση/Ταξινόμηση Πίνακα Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου Γραμμική Αναζήτηση (Linear Search) Η γραμμική αναζήτηση (linear search) είναι ο πιο απλός τρόπος αναζήτησης μίας συγκεκριμένης τιμής μέσα σε έναν μη ταξινομημένο πίνακα Συγκεκριμένα, συγκρίνεται η τιμή κάθε στοιχείου του πίνακα με αυτήν την τιμή ξεκινώντας τον έλεγχο από το πρώτο στοιχείο του πίνακα και συνεχίζοντας με τη σειρά (σειριακά) μέχρι το τελευταίο στοιχείο του Αν βρεθεί κάποιο στοιχείο του πίνακα που να έχει αυτή την τιμή, τότε η αναζήτηση σταματάει 2 1

Παράδειγμα - Εκφώνηση Δημιουργήστε μία συνάρτηση που να δέχεται σαν παράμετρο έναν πίνακα ακεραίων, το μέγεθός του και έναν ακέραιο αριθμό. Η συνάρτηση θα ελέγχει αν υπάρχει ο αριθμός στον πίνακα και - αν υπάρχει - να επιστρέφει τη θέση που βρέθηκε (για πρώτη φορά) ο αριθμός στον πίνακα, αλλιώς να επιστρέφει -1. Στη συνέχεια, γράψτε ένα πρόγραμμα το οποίο να διαβάζει έως 100 ακεραίους και να τους αποθηκεύει σε έναν πίνακα ακεραίων. Η εισαγωγή των ακεραίων να σταματάει αν ο χρήστης εισάγει την τιμή -1. Επίσης, το πρόγραμμα να διαβάζει έναν ακέραιο και να εμφανίζει τη θέση του μέσα στον πίνακα με χρήση της συνάρτησης. 3 Παράδειγμα Λύση (1/2) 4 2

Παράδειγμα Λύση (2/2) 5 Δυαδική Αναζήτηση (Binary Search) Ο αλγόριθμος της δυαδικής αναζήτησης (binary search) μπορεί να εφαρμοστεί για την αναζήτηση μίας τιμής μέσα σε έναν πίνακα, μόνο εάν αυτός είναι ταξινομημένος κατά αύξουσα ή φθίνουσα σειρά Εν συντομία, αν θεωρήσουμε ότι έχουμε έναν ταξινομημένο πίνακα, με τη δυαδική αναζήτηση ο ταξινομημένος πίνακας χωρίζεται σε ίσα τμήματα κάθε φορά και συγκρίνουμε την τιμή που ψάχνουμε να βρούμε με την τιμή του μεσαίου στοιχείου του κάθε τμήματος επαναλαμβάνοντας τη συγκεκριμένη διαδικασία αναζήτησης στο αντίστοιχο τμήμα του πίνακα Η εκτέλεση του αλγορίθμου τερματίζεται είτε στην περίπτωση που βρεθεί η τιμή στον πίνακα είτε στην περίπτωση που η τιμή της μεταβλητής που χρησιμοποιούμε για να δείξουμε το «κάτω όριο» του πίνακα στον οποίο κάνουμε την αναζήτηση γίνει μεγαλύτερη από την τιμή της αντίστοιχης μεταβλητής του «πάνω ορίου» (γεγονός που σημαίνει ότι η τιμή που αναζητούμε, δεν υπάρχει) 6 3

Δυαδική Αναζήτηση Βήμα προς Βήμα (Ι) Πιο αναλυτικά, αν θεωρήσουμε ότι έχουμε έναν ταξινομημένο πίνακα κατά αύξουσα σειρά τα βήματα του αλγορίθμου Δυαδικής Αναζήτησης είναι τα ακόλουθα: Βήμα 1: Χρησιμοποιούμε δύο ακέραιες μεταβλητές, έστω με τα ονόματα start και end, οι οποίες δηλώνουν αντίστοιχα την αρχή και το τέλος του τμήματος του πίνακα, στον οποίο αναζητούμε τη συγκεκριμένη τιμή Στη συνέχεια, υπολογίζουμε τη μεσαία θέση του πίνακα, η οποία είναι: middle = (start + end)/2 Π.χ. αν έχουμε έναν ταξινομημένο πίνακα 100 ακεραίων, τότε η τιμή της μεταβλητής start είναι 0, της end είναι 99 και της middle είναι 49 7 Δυαδική Αναζήτηση Βήμα προς Βήμα (ΙΙ) Βήμα 2: Συγκρίνουμε την τιμή του στοιχείου που βρίσκεται σε αυτή τη θέση (τη μεσαία θέση) με την τιμή που ψάχνουμε να βρούμε Αν είναι ίσες, τότε η τιμή βρέθηκε και η αναζήτηση τερματίζεται Αν η τιμή που ψάχνουμε είναι μεγαλύτερη από την τιμή του μεσαίου στοιχείου, τότε συνεχίζουμε την αναζήτηση στο τμήμα του πίνακα που ξεκινάει από τη μεσαία θέση μέχρι το τέλος του πίνακα (η εκτέλεση του αλγορίθμου μεταβαίνει στο Βήμα 1, αφού πρώτα η τιμή της μεταβλητής start γίνει: start = middle+1) Αν η τιμή που ψάχνουμε είναι μικρότερη από την τιμή του μεσαίου στοιχείου, τότε συνεχίζουμε την αναζήτηση στο τμήμα του πίνακα που ξεκινάει από την πρώτη θέση του πίνακα μέχρι τη μεσαία θέση (η εκτέλεση του αλγορίθμου μεταβαίνει στο Βήμα 1, αφού πρώτα η τιμή της μεταβλητής end γίνει: end = middle-1) 8 4

Παράδειγμα - Εκφώνηση Δημιουργήστε μία συνάρτηση που να δέχεται σαν παράμετρο έναν πίνακα ακεραίων, το μέγεθός του και έναν ακέραιο αριθμό. Η συνάρτηση θα ελέγχει αν υπάρχει ο αριθμός στον πίνακα και αν υπάρχει θα πρέπει να επιστρέφει τη θέση που βρέθηκε ο αριθμός στον πίνακα, αλλιώς να επιστρέφει -1. Στη συνέχεια, γράψτε ένα πρόγραμμα το οποίο να δηλώνει έναν πίνακα ακεραίων με τιμές ταξινομημένες κατά αύξουσα σειρά. Το πρόγραμμα να διαβάζει έναν ακέραιο και να εμφανίζει τη θέση του μέσα στον πίνακα με χρήση της συνάρτησης. 9 Παράδειγμα Λύση (1/2) 10 5

Παράδειγμα Λύση (2/2) 11 Ταξινόμηση Πίνακα με τη μέθοδο Selection Sort (Ι) Ο αλγόριθμος Selection Sort, χρησιμοποιείται για την ταξινόμηση των στοιχείων ενός πίνακα σε αύξουσα ή φθίνουσα σειρά Στη συνέχεια περιγράφονται τα βήματα του αλγορίθμου Selection Sort, θεωρώντας ότι θέλουμε να ταξινομήσουμε τα στοιχεία ενός πίνακα κατά αύξουσα σειρά Βήμα 1: Βρίσκουμε το στοιχείο του πίνακα που έχει τη μικρότερη τιμή και γίνεται ανταλλαγή τιμών μεταξύ αυτού του στοιχείου και του πρώτου στοιχείου του πίνακα Άρα, η ελάχιστη τιμή του πίνακα αποθηκεύεται στην πρώτη θέση του Βήμα 2: Βρίσκουμε τη νέα ελάχιστη τιμή μεταξύ των υπολοίπων στοιχείων του πίνακα, (δηλαδή χωρίς το πρώτο στοιχείο) Όπως προηγουμένως, γίνεται ανταλλαγή τιμών μεταξύ αυτού του στοιχείου και του δεύτερου στοιχείου του πίνακα Άρα, η δεύτερη μικρότερη τιμή του πίνακα αποθηκεύεται στη δεύτερη θέση του 12 6

Ταξινόμηση Πίνακα με τη μέθοδο Selection Sort (ΙΙ) Βήμα 3: Παρομοίως, βρίσκουμε τη νέα ελάχιστη τιμή μεταξύ των υπολοίπων στοιχείων του πίνακα, (δηλαδή χωρίς τα δύο πρώτα στοιχεία) Όπως προηγουμένως, γίνεται ανταλλαγή τιμών μεταξύ αυτού του στοιχείου και του τρίτου στοιχείου του πίνακα Άρα, η τρίτη μικρότερη τιμή του πίνακα αποθηκεύεται στην τρίτη θέση του Βήμα 4: Η διαδικασία αυτή επαναλαμβάνεται για τα υπόλοιπα στοιχεία του πίνακα Ο αλγόριθμος τερματίζεται όταν γίνει η σύγκριση των δύο τελευταίων στοιχείων του πίνακα 13 Παράδειγμα - Εκφώνηση Δημιουργήστε μία συνάρτηση που να δέχεται σαν παράμετρο έναν πίνακα ακεραίων και να τον ταξινομεί κατά αύξουσα σειρά, βάσει του αλγορίθμου Selection Sort. Στη συνέχεια, γράψτε ένα πρόγραμμα το οποίο να διαβάζει 10 ακέραιους αριθμούς, να τους αποθηκεύει σε έναν πίνακα ακεραίων και με χρήση της συνάρτησης να εμφανίζει τον ταξινομημένο πίνακα 14 7

Παράδειγμα Λύση (1/2) 15 Παράδειγμα Λύση (2/2) 16 8

Ταξινόμηση Πίνακα με τη μέθοδο της Φυσαλίδας (Ι) Ο αλγόριθμος της φυσαλίδας (bubble sort), χρησιμοποιείται επίσης για την ταξινόμηση των στοιχείων ενός πίνακα σε αύξουσα ή φθίνουσα σειρά Σύμφωνα με τον αλγόριθμο bubble sort κάθε στοιχείο του πίνακα, ανάλογα με την τιμή του, «ανεβαίνει» σαν φυσαλίδα προς τα επάνω και αποθηκεύεται στην αντίστοιχη θέση του πίνακα Δηλαδή, αν θέλουμε να ταξινομήσουμε έναν πίνακα κατά αύξουσα σειρά, τότε το στοιχείο του πίνακα με τη μικρότερη τιμή «ανεβαίνει» προς τα επάνω και αποθηκεύεται στην πρώτη θέση του πίνακα, το στοιχείο του πίνακα με τη δεύτερη μικρότερη τιμή αποθηκεύεται στη δεύτερη θέση του πίνακα, κ.ο.κ. 17 Ταξινόμηση Πίνακα με τη μέθοδο της Φυσαλίδας (ΙΙ) Σύμφωνα με τον αλγόριθμο bubble sort λαμβάνουν χώρα διαδοχικές συγκρίσεις των τιμών των γειτονικών στοιχείων του πίνακα, ξεκινώντας από το τέλος του πίνακα Στην αρχή συγκρίνεται η τιμή του τελευταίου στοιχείου του πίνακα με την τιμή του προτελευταίου στοιχείου του Σε περίπτωση που επιθυμούμε ταξινόμηση του πίνακα κατά αύξουσα σειρά, αν η τιμή του τελευταίου στοιχείου είναι μικρότερη, τότε οι τιμές ανταλλάσσονται (δηλαδή, η μικρότερη τιμή «ανέβηκε» σαν φυσαλίδα προς τα επάνω) ενώ, αν δεν είναι, τότε δεν γίνεται καμία ανταλλαγή Στη συνέχεια συγκρίνεται η νέα τιμή του προτελευταίου στοιχείου με την τιμή του προ-προτελευταίου στοιχείου του Αν είναι πάλι μικρότερη, τότε οι τιμές ανταλλάσσονται και αυτή η τιμή συνεχίζει να «ανεβαίνει» προς τα επάνω (ενώ, αν δεν είναι, τότε δεν γίνεται καμία ανταλλαγή) 18 9

Ταξινόμηση Πίνακα με τη μέθοδο της Φυσαλίδας (ΙΙΙ) Οι γειτονικές συγκρίσεις συνεχίζονται και τελικά με αυτό τον τρόπο η ελάχιστη τιμή μεταξύ των στοιχείων του πίνακα θα «ανέβει» προς τα επάνω και θα αποθηκευτεί στην πρώτη θέση του πίνακα Παρομοίως, συνεχίζουμε με την εύρεση του ελαχίστου στοιχείου στο τμήμα του πίνακα από τη δεύτερη θέση μέχρι την τελευταία θέση του Με διαδοχικές συγκρίσεις των γειτονικών στοιχείων και, αν χρειάζεται ανταλλαγής των τιμών τους, αυτή η τιμή θα «ανέβει» προς τα επάνω και θα αποθηκευτεί στη δεύτερη θέση του πίνακα Η διαδικασία αυτή επαναλαμβάνεται για τα υπόλοιπα τμήματα του πίνακα Ο αλγόριθμος bubble sort τερματίζεται όταν καμία τιμή δεν «ανέβει» προς τα επάνω, το οποίο σημαίνει ότι ο πίνακας είναι ταξινομημένος Αντίστοιχη λογική εφαρμόζεται και για την ταξινόμηση του πίνακα κατά φθίνουσα σειρά, μόνο που σε αυτή την περίπτωση ως «φυσαλίδα» (δηλ. στοιχείο που «ανεβαίνει» προς τα επάνω) θεωρείται το στοιχείο με τη μεγαλύτερη και όχι με τη μικρότερη τιμή 19 Παράδειγμα - Εκφώνηση Δημιουργήστε μία συνάρτηση που να δέχεται σαν παράμετρο έναν πίνακα ακεραίων και να τον ταξινομεί κατά αύξουσα σειρά, βάσει του αλγορίθμου Bubble Sort Στη συνέχεια, γράψτε ένα πρόγραμμα το οποίο να διαβάζει 5 ακεραίους αριθμούς, να τους αποθηκεύει σε έναν πίνακα ακεραίων και με χρήση της συνάρτησης να εμφανίζει τον ταξινομημένο κατά αύξουσα σειρά πίνακα 20 10

Παράδειγμα Λύση (1/2) 21 Παράδειγμα Λύση (2/2) Εκτελέστε τον αλγόριθμο bubble sort για είσοδο: 10, 9, 4, 7, 6 22 11

Οι συναρτήσεις βιβλιοθήκης bsearch() και qsort() Η συνάρτηση βιβλιοθήκης bsearch() χρησιμοποιείται για την αναζήτηση μίας τιμής μέσα σε έναν ταξινομημένο πίνακα, υλοποιώντας τον αλγόριθμο της δυαδικής αναζήτησης Η συνάρτηση βιβλιοθήκης qsort() χρησιμοποιείται για να ταξινομήσει τα στοιχεία ενός πίνακα σε αύξουσα ή φθίνουσα σειρά, υλοποιώντας τον αλγόριθμο της «γρήγορης ταξινόμησης» (quick sort) και μπορεί να χρησιμοποιηθεί για την ταξινόμηση ενός πίνακα αντί της μεθόδου της φυσαλίδας (bubble sort) 23 12