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

Smazaný obsah Přidaný obsah
typografia
Zemiak123 (diskusia | príspevky)
d aktualizacia algoritmu pre python 3; doplnenie zmienky o chybe
Riadok 7:
== Implementácie ==
 
Rekurzívna implementácia binárneho vyhľadávania v jazyku [[Python]] 3:
<source lang="python">
def binarySearch(zoznam, hodnota, vlavo, vpravo):
if vpravo < vlavo:
return False
stred = vlavo + int((vpravo - vlavo) / 2)
if zoznam[stred] == hodnota:
return True
Riadok 25:
def binarySearch(zoznam, hodnota, vlavo, vpravo):
while vlavo <= vpravo:
stred = vlavo + int((vpravo - vlavo) / 2)
if zoznam[stred] == hodnota:
return True
Riadok 36:
 
=== Implementačné komplikácie ===
Keď Jon Bentley priradil binárne vyhľadávanie ako problém pre kurz profesionálnych programátorov, zistil, že 90% z nich nedokáže poskytnúť správne riešenie. ďalšiaĎalšia štúdia publikovaná v roku 1988 ukazuje, že správny kód pre binárne vyhľadávanie sa dá nájsť len v 5 z 20 učebniciach. Ďalej, Bentley-ho vlastná implementácia binárneho vyľadávania, publikovaná v roku 1986 v knihe ''Programming Pearls'', obsahovala chybu typu [[Pretečenie vyrovnávacej pamäte|overflow]] <sub>(v skutočnosti prekročenie veľkosti premennej typu integer)</sub>, ktorá ostala neodhalená viac ako 20 rokov.<ref>https://research.googleblog.com/2006/06/extra-extra-read-all-about-it-nearly.html</ref>
 
Bentley-ho vlastná implementácia binárneho vyhľadávania, publikovaná v roku 1986 v knihe ''Programming Pearls'', obsahovala chybu ktorá pri vysokých číslach zbytočne spôsobovala prekročenie maximálnej veľkosti premennej typu integer. Chyba nebola odhalená viac ako 20 rokov.<ref>https://research.googleblog.com/2006/06/extra-extra-read-all-about-it-nearly.html</ref> V oficiálnej knižnici v jazykujazyka [[Java (programovací jazyk)|Java]] sa vyskytovala rovnaká chyba po dobu viac než 9 rokov.<ref>http://bugs.java.com/bugdatabase/view_bug.do?bug_id=5045582</ref>
* Ukážkový kód algoritmu, ktorý bol na tejto stránke, pred úpravou túto chybu obsahoval tiež.
 
* Ukážkový kód algoritmu, ktorý bol na tejto stránke, pred úpravou túto chybu obsahoval tiež.
 
== Referencie ==