Ακολουθιακή αναζήτηση.
Αυτός ο αλγόριθμος ελέγχει αν ο αριθμός v
περιλαμβάνεται σε ένα ήδη αποθηκευμένο σύνολο αριθμών στα στοιχεία
a[0], a[1], …, a[r-1] του πίνακα a (όπου r ο αριθμός των στοιχείων σε
αυτόν), συγκρίνοντας τον με κάθε αριθμό ακολουθιακά, ξεκινώντας από την
αρχή. Εάν ο έλεγχος φθάσει στο τέλος χωρίς να βρεθεί ο αριθμός,
επιστρέφεται η τιμή -1. Διαφορετικά, επιστρέφεται ο αριθμοδείκτης της
θέσης του μονοδιάστατου πίνακα που περιέχει τον αριθμό.
int search (int a[], int v, int r) { for (int i = 0; i < r; i++) if (v == a[i]) return i; return -1; }Δυαδική αναζήτηση.
Αυτός ο αλγόριθμος ελέγχει αν ο αριθμός v
περιλαμβάνεται σε ένα ήδη αποθηκευμένο σύνολο αριθμών στα στοιχεία
a[0], a[1], …, a[r-1] του πίνακα a, όπου r ο αριθμός των στοιχείων σε
αυτόν. Εάν ο έλεγχος φθάσει στο τέλος χωρίς να βρεθεί ο αριθμός,
επιστρέφεται η τιμή -1. Διαφορετικά, επιστρέφεται ο αριθμοδείκτης της
θέσης του μονοδιάστατου πίνακα που περιέχει τον αριθμό. Για να
λειτουργήσει σωστά η δυαδική αναζήτηση θα πρέπει πρώτα τα στοιχεία του
πίνακα να είναι ταξινομημένα σε αύξουσα σειρά.
int search (int a[], int v, int r) { int l = 0; while (r - l > 1) { int m = l + (r - l) / 2; if (a[m] > v) r = m; else l = m; } return (a[l] == v) ? l : -1; }
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου