Junior
Πώς λειτουργεί ο αλγόριθμος δυαδικής αναζήτησης;
sobes.tech AI
Απάντηση από AI
Η δυαδική αναζήτηση λειτουργεί αναλύοντας έναν ταξινομημένο πίνακα, διαιρώντας συνεχώς το εύρος αναζήτησης στη μέση.
- Εκκίνηση: Ορίζονται τα αριστερά και δεξιά όρια του εύρους αναζήτησης (συνήθως η αρχή και το τέλος του πίνακα).
- Σύγκριση: Υπολογίζεται η δείκτης του μέσου του εύρους. Η τιμή σε αυτό το δείκτη συγκρίνεται με το ζητούμενο στοιχείο.
- Μείωση του εύρους:
- Αν η τιμή στο μέσο ταιριάζει με το ζητούμενο, το στοιχείο βρέθηκε.
- Αν η τιμή στο μέσο είναι μεγαλύτερη από το ζητούμενο, η αναζήτηση συνεχίζεται στο αριστερό μισό του εύρους. Ο δεξιός περιορισμός μετακινείται στο μέσο - 1.
- Αν η τιμή στο μέσο είναι μικρότερη από το ζητούμενο, η αναζήτηση συνεχίζεται στο δεξί μισό του εύρους. Ο αριστερός περιορισμός μετακινείται στο μέσο + 1.
- Επανάληψη: Τα βήματα 2 και 3 επαναλαμβάνονται μέχρι να βρεθεί το στοιχείο ή το εύρος αναζήτησης να γίνει κενό.
Η πολυπλοκότητα του αλγορίθμου είναι O(log n), που είναι πολύ πιο αποδοτικό από την γραμμική αναζήτηση για μεγάλους πίνακες.
Παράδειγμα υλοποίησης σε Python:
def binary_search(arr, target):
"""
Υλοποίηση δυαδικής αναζήτησης.
Δέχεται έναν ταξινομημένο πίνακα και την τιμή που αναζητάται.
Επιστρέφει το δείκτη του στοιχείου ή -1 αν δεν βρεθεί.
"""
αριστερά, δεξιά = 0, len(arr) - 1
while αριστερά <= δεξιά:
μέσο = (αριστερά + δεξιά) // 2 # Υπολογισμός δείκτη μέσου
μέσο_τιμή = arr[μέσο] # Λήψη τιμής στο μέσο
if μέσο_τιμή == target:
return μέσο # Βρέθηκε το στοιχείο
elif μέσο_τιμή < target:
αριστερά = μέσο + 1 # Αναζήτηση δεξιά
else: # μέσο_τιμή > target
δεξιά = μέσο - 1 # Αναζήτηση αριστερά
return -1 # Το στοιχείο δεν βρέθηκε