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

Πολλές φορές χρειάζεται να αναζητήσουμε κάτι συγκεκριμένο μέσα σε μια συλλογή δεδομένων π.χ. ένα επώνυμο και ένα τηλέφωνο σε έναν τηλεφωνικό κατάλογο, έναν αριθμό ταυτότητας, έναν αριθμό μέσα σε μια λίστα.

Έστω λοιπόν ότι έχουμε μια λίστα αριθμών [3, 6, 12, 20, 29, 42, 53, 61, 78, 83, 97] και θέλουμε να κάνουμε αναζήτηση σε αυτή για να δούμε αν υπάρχει και σε ποια θέση ο αριθμός 83.

Ο πιο απλός τρόπος είναι να χρησιμοποιήσουμε τον αλγόριθμο της σειριακής (ή γραμμικής) αναζήτησης σύμφωνα με τον οποίο ελέγχουμε ένα ένα τα στοιχεία της λίστας μέχρι να βρούμε (ή όχι) αυτό που ψάχνουμε.

Έτσι στην χειρότερη περίπτωση, αν για παράδειγμα το στοιχείο δεν υπάρχει στη λίστα ή είναι το τελευταίο, θα κάνουμε τόσες συγκρίσεις όσα είναι και τα στοιχεία που έχουμε…

Παρακάτω μπορείτε να δείτε τον κώδικα σε Python που υλοποιεί τον αλγόριθμο της σειριακής αναζήτησης και να τον εκτελέσετε βήμα βήμα παρακολουθώντας τον τρόπο λειτουργίας του.

Μήπως μπορούμε και καλύτερα;

Υπάρχει μήπως κάποιος τρόπος να βρούμε το ζητούμενο στοιχείο πιο γρήγορα; 

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

Ας μάθουμε παίζοντας…

Για τα επόμενα βήματα θα χωριστείτε σε ομάδες και θα παίξετε 4 παιχνίδια. Μετά από κάθε παιχνίδι θα πρέπει να απαντήσετε σε κάποιες σύντομες ερωτήσεις. 

Πατήστε στο Βέλος.

Επόμενο