Cerca dicotòmica¶
Un algorisme molt important en informàtica és la cerca dicotòmica, també anomenada cerca binària. Es tracta d’un mètode que només és aplicable a conjunts ordenats amb accés directe als components. A cada pas, l’algorisme compara l’element buscat amb l’element central de la seqüència (el del mig). Si coincideixen, llavors la cerca ha acabat amb èxit. Altrament, si l’element buscat és més petit que el central, es repeteix la cerca en la subseqüència de la part esquerra de l’element central; i si l’element cercat és més gran que l’element central, només caldrà cercar en la subseqüència de la dreta. Quan la seqüència en la qual cal cercar és buida, el procés s’acaba sense èxit.
Utilitzant la recursivitat, dissenyeu la funció següent, que ha d’usar el mètode de la cerca dicotòmica. Deseu-la en el fitxer
cercadic.py(mòdulcercadic):- cercadic.es_en_llista(llista, elem)¶
Donada una llista ordenada, retorna True si l’element és a la llista i False altrament.
Per exemple:
>>> l1 = [2, 5, 7, 15, 19, 23, 25, 28, 31, 33, 36, 37, 42, 45, 48] >>> es_en_llista(l1, 28) True >>> es_en_llista(l1, 1) False >>> es_en_llista(l1, 7) True
Nota
Disposeu de jocs de prova al fitxer
es_en_llista.txt.Utilitzant la recursivitat, dissenyeu la funció següent i deseu-la en el fitxer
cercadic.py(mòdulcercadic):- cercadic.index_llista(llista, elem)¶
Donada una llista ordenada, retorna l’índex corresponent a la posició de l’element a la llista. Si l’element no és a la llista, retorna -1.
Per exemple:
>>> l1 = [2, 5, 7, 15, 19, 23, 25, 28, 31, 33, 36, 37, 42, 45, 48] >>> index_llista(l1, 28) 7 >>> index_llista(l1, 1) -1 >>> index_llista(l1, 7) 2
Nota
Disposeu de jocs de prova al fitxer
index_llista.txt.
Solució
Disposeu de solucions al fitxer cercadic.py.