Binární vyhledávání: Porovnání verzí

Smazaný obsah Přidaný obsah
známa chyba v algoritmu pro vysoká čísla
m →‎Implementace: aktualizace algoritmu pro python 3; preklepy
Řádek 11:
Parametry <code>vlevo</code> a <code>vpravo</code> jsou hodnoty <code>0</code> a <code>n-1</code> kde n je počet prvků pole, které se mají v předávaném poli prohledat.
<br />
Rekurzivní implementace binárního vyhledávání v jazyce [[Python]] 3:
 
<source lang="python">
Řádek 17:
if vpravo < vlevo:
return False
stred = vlevo + int((vpravo - vlevo) / 2)
if seznam[stred] == hodnota:
return True
Řádek 30:
def binarySearch(seznam, hodnota, vlevo, vpravo):
while vlevo <= vpravo:
stred = vlevo + int((vpravo - vlevo) / 2)
if seznam[stred] == hodnota:
return True
Řádek 42:
Hledání středu je možné zapsat i jako:
<source lang="python">
stred = int((vpravo + vlevo) / 2)
</source>
Tenhle zápis však způsobuje známou chybu pripři vysokých číslech kdy dochází k prekročenípřekročení maximální hodnoty typu integer.<ref>
The curious case of Binary Search — The famous bug that remained undetected for 20 years https://thebittheories.com/the-curious-case-of-binary-search-the-famous-bug-that-remained-undetected-for-20-years-973e89fc212</ref>