Αναζήτηση και ταξινόμηση
Σειριακή και δυαδική αναζήτηση, φυσαλίδα, και το «διαίρει και βασίλευε».
40 λεπτά
Θα μάθεις να
- Να γράφεις τη σειριακή αναζήτηση και να λες πότε είναι η μόνη επιλογή.
- Να εκτελείς δυαδική αναζήτηση και να αναγνωρίζεις την προϋπόθεσή της.
- Να εκτελείς την ταξινόμηση φυσαλίδας και να μετράς τις συγκρίσεις της.
- Να εξηγείς τη στρατηγική «διαίρει και βασίλευε».
Σειριακή αναζήτηση
Η πιο απλή: ελέγχουμε τα στοιχεία ένα προς ένα από την αρχή, μέχρι να βρεθεί το ζητούμενο ή να τελειώσει ο πίνακας.
ΑΛΓΟΡΙΘΜΟΣ ΣειριακήΔΕΔΟΜΕΝΑ // A, n, key //done ← ΨΕΥΔΗΣposition ← -1i ← 1ΟΣΟ i <= n ΚΑΙ done = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕΑΝ A[i] = key ΤΟΤΕdone ← ΑΛΗΘΗΣposition ← iΑΛΛΙΩΣi ← i + 1ΤΕΛΟΣ_ΑΝΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣΑΠΟΤΕΛΕΣΜΑΤΑ // done, position //ΤΕΛΟΣ_ΑΛΓΟΡΙΘΜΟΥ
Η σημαία done υπάρχει για να σταματά ο βρόχος μόλις βρεθεί το στοιχείο. Χωρίς αυτήν, ο αλγόριθμος θα σάρωνε ολόκληρο τον πίνακα ακόμη κι όταν το βρήκε στην πρώτη θέση.
Δυαδική αναζήτηση
Απαιτεί ταξινομημένο πίνακα. Σε κάθε βήμα κοιτάζει το μεσαίο στοιχείο και πετάει το μισό που δεν μπορεί να περιέχει το ζητούμενο.
- Βρες το μεσαίο στοιχείο του διαστήματος αναζήτησης.
- Αν είναι το ζητούμενο, τελείωσε.
- Αν είναι μικρότερο, συνέχισε στο δεξί μισό· αν μεγαλύτερο, στο αριστερό.
- Επανάλαβε ώσπου το διάστημα αδειάσει.
Ταξινόμηση φυσαλίδας
Συγκρίνει γειτονικά ζεύγη και τα αντιμεταθέτει όταν είναι σε λάθος σειρά. Κάθε πέρασμα ανεβάζει ένα στοιχείο στη σωστή του θέση — σαν φυσαλίδα.
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ nΓΙΑ j ΑΠΟ n ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1ΑΝ A[j-1] > A[j] ΤΟΤΕtemp ← A[j-1]A[j-1] ← A[j]A[j] ← tempΤΕΛΟΣ_ΑΝΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ο εσωτερικός βρόχος πηγαίνει ανάποδα, από το τέλος προς το i. Έτσι το μικρότερο στοιχείο ανεβαίνει προς την αρχή, και μετά το πέρασμα i οι πρώτες i-1 θέσεις είναι οριστικές.
Οι συγκρίσεις είναι πάντα
ανεξάρτητα από τα δεδομένα. Οι αντιμεταθέσεις εξαρτώνται: καμία σε ήδη ταξινομημένο πίνακα, το μέγιστο σε αντιστρόφως ταξινομημένο.
Διαίρει και βασίλευε
Η στρατηγική πίσω από τη δυαδική αναζήτηση, σε τρία βήματα:
- Διαίρεση του προβλήματος σε μικρότερα του ίδιου τύπου.
- Κυριαρχία — λύση των μικρότερων, συνήθως αναδρομικά.
- Σύνθεση των επιμέρους λύσεων.
Η δυαδική αναζήτηση είναι η καθαρότερη περίπτωση: κάθε βήμα μισεύει το πρόβλημα, και η σύνθεση δεν χρειάζεται καθόλου, αφού η απάντηση βρίσκεται σε ένα μόνο από τα δύο μισά.
Λυμένα παραδείγματα
Παράδειγμα 1
Σε ταξινομημένο πίνακα 100 στοιχείων με τιμές 1 έως 100, πόσες συγκρίσεις κάνει η δυαδική αναζήτηση για το 73;
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Παράδειγμα 2
Πόσες συγκρίσεις κάνει η φυσαλίδα σε πίνακα 10 στοιχείων;
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Παράδειγμα 3
Δίνεται μη ταξινομημένος πίνακας 1000 ονομάτων και ζητείται μία αναζήτηση. Τι επιλέγεις;
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Παράδειγμα 4
Εκτέλεσε τη φυσαλίδα στον πίνακα 5, 2, 9, 1 και δώσε το πλήθος των αντιμεταθέσεων.
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Ασκήσεις
Από την πιο απλή στην πιο δύσκολη. Κρυμμένη είναι μόνο η απάντηση — ο δρόμος ως εκεί είναι δική σου δουλειά.
Τι πρέπει να ισχύει για τον πίνακα ώστε να εφαρμοστεί δυαδική αναζήτηση;
Τεστ
Δεν μετράει βαθμός — μετράει να δεις τι κατάλαβες. Προσπέρασε όποια θες και γύρνα πίσω όποτε θες.
Ερώτηση 1 από 8
Τα κατάφερες;
- Να γράφεις τη σειριακή αναζήτηση και να λες πότε είναι η μόνη επιλογή.
- Να εκτελείς δυαδική αναζήτηση και να αναγνωρίζεις την προϋπόθεσή της.
- Να εκτελείς την ταξινόμηση φυσαλίδας και να μετράς τις συγκρίσεις της.
- Να εξηγείς τη στρατηγική «διαίρει και βασίλευε».
Κάνε το τεστ πιο πάνω και θα δεις εδώ πού στέκεσαι.