Μετάβαση στο περιεχόμενο
Akademio

Αναζήτηση και ταξινόμηση

Σειριακή και δυαδική αναζήτηση, φυσαλίδα, και το «διαίρει και βασίλευε».

40 λεπτά

Θα μάθεις να

  1. Να γράφεις τη σειριακή αναζήτηση και να λες πότε είναι η μόνη επιλογή.
  2. Να εκτελείς δυαδική αναζήτηση και να αναγνωρίζεις την προϋπόθεσή της.
  3. Να εκτελείς την ταξινόμηση φυσαλίδας και να μετράς τις συγκρίσεις της.
  4. Να εξηγείς τη στρατηγική «διαίρει και βασίλευε».

Σειριακή αναζήτηση

Η πιο απλή: ελέγχουμε τα στοιχεία ένα προς ένα από την αρχή, μέχρι να βρεθεί το ζητούμενο ή να τελειώσει ο πίνακας.

Σειριακή αναζήτηση με σημαία
  1. ΑΛΓΟΡΙΘΜΟΣ Σειριακή
  2. ΔΕΔΟΜΕΝΑ // A, n, key //
  3. done ΨΕΥΔΗΣ
  4. position -1
  5. i 1
  6. ΟΣΟ i <= n ΚΑΙ done = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
  7. ΑΝ A[i] = key ΤΟΤΕ
  8. done ΑΛΗΘΗΣ
  9. position i
  10. ΑΛΛΙΩΣ
  11. i i + 1
  12. ΤΕΛΟΣ_ΑΝ
  13. ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  14. ΑΠΟΤΕΛΕΣΜΑΤΑ // done, position //
  15. ΤΕΛΟΣ_ΑΛΓΟΡΙΘΜΟΥ

Η σημαία done υπάρχει για να σταματά ο βρόχος μόλις βρεθεί το στοιχείο. Χωρίς αυτήν, ο αλγόριθμος θα σάρωνε ολόκληρο τον πίνακα ακόμη κι όταν το βρήκε στην πρώτη θέση.

Δυαδική αναζήτηση

Απαιτεί ταξινομημένο πίνακα. Σε κάθε βήμα κοιτάζει το μεσαίο στοιχείο και πετάει το μισό που δεν μπορεί να περιέχει το ζητούμενο.

  1. Βρες το μεσαίο στοιχείο του διαστήματος αναζήτησης.
  2. Αν είναι το ζητούμενο, τελείωσε.
  3. Αν είναι μικρότερο, συνέχισε στο δεξί μισό· αν μεγαλύτερο, στο αριστερό.
  4. Επανάλαβε ώσπου το διάστημα αδειάσει.

Σειριακή εναντίον δυαδικής

Ανέβασε το μέγεθος στα 1000. Η σειριακή χρειάζεται στη χειρότερη περίπτωση 1000 συγκρίσεις· η δυαδική 10. Κάθε διπλασιασμός του πίνακα κοστίζει στη δυαδική μία μόνο σύγκριση παραπάνω.

Η δυαδική προϋποθέτει ταξινομημένο πίνακα. Η σειριακή όχι — γι' αυτό δεν είναι πάντα η κακή επιλογή.

Συγκρίσεις για αυτή τη θέση

Σειριακή73

χειρότερη περίπτωση: 100

Δυαδική6

χειρότερη περίπτωση: 7

Ταξινόμηση φυσαλίδας

Συγκρίνει γειτονικά ζεύγη και τα αντιμεταθέτει όταν είναι σε λάθος σειρά. Κάθε πέρασμα ανεβάζει ένα στοιχείο στη σωστή του θέση — σαν φυσαλίδα.

Ταξινόμηση φυσαλίδας
  1. ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ n
  2. ΓΙΑ j ΑΠΟ n ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
  3. ΑΝ A[j-1] > A[j] ΤΟΤΕ
  4. temp A[j-1]
  5. A[j-1] A[j]
  6. A[j] temp
  7. ΤΕΛΟΣ_ΑΝ
  8. ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  9. ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Ο εσωτερικός βρόχος πηγαίνει ανάποδα, από το τέλος προς το i. Έτσι το μικρότερο στοιχείο ανεβαίνει προς την αρχή, και μετά το πέρασμα i οι πρώτες i-1 θέσεις είναι οριστικές.

Φυσαλίδα στον πίνακα 5, 2, 9, 1

Έξι συγκρίσεις συνολικά, όσες και το n(n−1)/2 για n = 4. Πρόσεξε ότι το πλήθος τους δεν εξαρτάται από τα δεδομένα — μόνο το πλήθος των αντιμεταθέσεων.

ΒήμαijΣύγκρισηΠίνακας
Ζωντανή ενημέρωση

Οι συγκρίσεις είναι πάντα

n(n1)2\frac{n(n-1)}{2}

ανεξάρτητα από τα δεδομένα. Οι αντιμεταθέσεις εξαρτώνται: καμία σε ήδη ταξινομημένο πίνακα, το μέγιστο σε αντιστρόφως ταξινομημένο.

Διαίρει και βασίλευε

Η στρατηγική πίσω από τη δυαδική αναζήτηση, σε τρία βήματα:

  1. Διαίρεση του προβλήματος σε μικρότερα του ίδιου τύπου.
  2. Κυριαρχία — λύση των μικρότερων, συνήθως αναδρομικά.
  3. Σύνθεση των επιμέρους λύσεων.

Η δυαδική αναζήτηση είναι η καθαρότερη περίπτωση: κάθε βήμα μισεύει το πρόβλημα, και η σύνθεση δεν χρειάζεται καθόλου, αφού η απάντηση βρίσκεται σε ένα μόνο από τα δύο μισά.

Λυμένα παραδείγματα

Παράδειγμα 1

Σε ταξινομημένο πίνακα 100 στοιχείων με τιμές 1 έως 100, πόσες συγκρίσεις κάνει η δυαδική αναζήτηση για το 73;

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Παράδειγμα 2

Πόσες συγκρίσεις κάνει η φυσαλίδα σε πίνακα 10 στοιχείων;

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Παράδειγμα 3

Δίνεται μη ταξινομημένος πίνακας 1000 ονομάτων και ζητείται μία αναζήτηση. Τι επιλέγεις;

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Παράδειγμα 4

Εκτέλεσε τη φυσαλίδα στον πίνακα 5, 2, 9, 1 και δώσε το πλήθος των αντιμεταθέσεων.

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Ασκήσεις

Από την πιο απλή στην πιο δύσκολη. Κρυμμένη είναι μόνο η απάντηση — ο δρόμος ως εκεί είναι δική σου δουλειά.

ΒασικήΆσκηση 1 από 4

Τι πρέπει να ισχύει για τον πίνακα ώστε να εφαρμοστεί δυαδική αναζήτηση;

Τεστ

Δεν μετράει βαθμός — μετράει να δεις τι κατάλαβες. Προσπέρασε όποια θες και γύρνα πίσω όποτε θες.

Ερώτηση 1 από 8

Η δυαδική αναζήτηση προϋποθέτει ότι ο πίνακας είναι:

Τα κατάφερες;

  • Να γράφεις τη σειριακή αναζήτηση και να λες πότε είναι η μόνη επιλογή.
  • Να εκτελείς δυαδική αναζήτηση και να αναγνωρίζεις την προϋπόθεσή της.
  • Να εκτελείς την ταξινόμηση φυσαλίδας και να μετράς τις συγκρίσεις της.
  • Να εξηγείς τη στρατηγική «διαίρει και βασίλευε».

Κάνε το τεστ πιο πάνω και θα δεις εδώ πού στέκεσαι.