Algoritmo di Ricerca Binaria in Python.
Conoscendo python e le potenzialità di cui è dotato questo linguaggio, il codice sottostante vi apparirà abbastanza rudimentale. E’ un algoritmo di Ricerca Binaria. Python integra nelle sue librerie base, svariati algoritmi di ricerca o ordinamento che hanno una complessità computazionale ottima. Per la ricerca vengono usate tabelle hash (dunque in fase di assegnazione, tramite apposite funzioni iniettive, si inseriscono gli elementi nelle varie posizioni e si consuma un pò più di memoria per compensare successivamente in termini di tempo la ricerca). Quindi detto questo, l’algoritmo d’esempio sotto è fine a se stesso, con una complessità computazionale logaritmica (log_2n) non uguaglia certamente le prestazioni di una ricerca hash. Ma è comunque perfetto per esercitarsi e prendere spunto per scrivere qualcosa di analogo, in altri linguaggi, che sono sprovvisti di librerie con algoritmi di ricerca efficenti.
#Ricerca in lista ordinata, tramite Algoritmo di Ricerca Binaria: O(log_2n). #Funzione di ricerca. def Ricerca_binaria(lista, n, x): '''Funzione di ricerca binaria.''' i = 0 j = n-1 while(i <= j): medio = (i+j)/2 if (x < lista[medio]): j = medio - 1 elif (x > lista[medio]): i = medio + 1 else: return medio return -1 #MAIN. l = [3, 4, 5, 13, 20, 21, 30, 33, 34, 35] #Lista di esempio. i = Ricerca_binaria(l, 10, input("Inserisci un numero da ricercare nella lista: ")) if (i >= 0): print "\nElemento trovato nella posizione %s\n" % i else: print "Elemento non trovato!", -1 |
Algorithm’s type: Divide et impera.
Commenti