Binárne vyhľadávanie: Rozdiel medzi revíziami

Smazaný obsah Přidaný obsah
Zemiak123 (diskusia | príspevky)
d aktualizacia algoritmu pre python 3; doplnenie zmienky o chybe
Zemiak123 (diskusia | príspevky)
→‎Implementácie: zmena v kóde - vyhľadávanie teraz vracia index hľadaného elementu, čo je obvyklejšie
Značky: úprava z mobilu úprava z mobilného webu
Riadok 10:
<source lang="python">
def binarySearch(zoznam, hodnota, vlavo, vpravo):
if vpravovlavo <> vlavovpravo:
return False-1 # hodnota nenajdená
stred = vlavo + int((vpravo - vlavo) / 2)
if zoznam[stred] == hodnota:
return True
if hodnota < zoznam[stred]:
binarySearch(zoznam, hodnota, vlavo, stred - 1)
else:
binarySearch(zoznam, hodnota, stred + 1, vpravo)
</source>
 
stred = vlavo + int((vpravo - vlavo) / 2)
Vďaka tomu, že rekurzívne volania sú na konci funkcie ([[koncová rekurzia]]), je možné túto implementáciu prepísať len pomocou cyklu:
if zoznam[stred] == hodnota:
return Truestred
if hodnota < zoznam[stred]:
return binarySearch(zoznam, hodnota, vlavo, stred - 1)
else:
return binarySearch(zoznam, hodnota, stred + 1, vpravo)
</source>
 
Vďaka tomu, že rekurzívne volania sú na konci funkcie ([[koncová rekurzia]]), je možné túto implementáciu prepísať len pomocou cyklu:
<source lang="python">
def binarySearch(zoznam, hodnota, vlavo, vpravo):