Napisz program w pythonie realizujący algorytm wyszukiwania elementu w zbiorze uporządkowanym metodą połowienia.
Mam takie coś, ale nie działa:
def znajdz_dana(wartosc):
poczatek = 0
koniec = N - 1
while poczatek <= koniec:
srodek = (poczatek + koniec) // 2
if a[srodek] == wartosc:
return srodek
else:
if wartosc < a[srodek]:
koniec = srodek - 1
else:
poczatek = srodek + 1
return -1


Odpowiedź :

def szukaj_polowieniem(lista, szukana):

   lewy, prawy = 0, len(lista) - 1

   while lewy <= prawy:

       srodek = (lewy + prawy) // 2

       if lista[srodek] == szukana:

           return srodek

       elif lista[srodek] < szukana:

           lewy = srodek + 1

       else:

           prawy = srodek - 1

   return -1

lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

print(szukaj_polowieniem(lista, 5))

Viz Inne Pytanie