//binarne vyhladavanie zadaneho prvku "hladany" pomocou cyklu while
//pole "pole" s poctom prvkov "velkost" musi byt usporiadane vzostupne
//(na zaciatku pola je prvok s najmensou hodnotou)
//funkcia vracia index zadaneho prvku v poli (v pripade neuspechu vyhladavania vracia -1)
int najdi_bin_cykl_index(int* pole, int velkost, int hladany){
int lavy_o=0;
int pravy_o=velkost-1;
while(lavy_o <= pravy_o){
int stred=(lavy_o + pravy_o)/2;
if (pole[stred] < hladany) lavy_o=stred+1;
else if (pole[stred] > hladany) pravy_o=stred-1;
else return stred;
}
return -1;
} |
//binarne vyhladavanie zadaneho prvku "hladany" pomocou cyklu while
//pole "pole" s poctom prvkov "velkost" musi byt usporiadane vzostupne
//(na zaciatku pola je prvok s najmensou hodnotou)
//funkcia vracia logicku premennu (ak sa zadany prvok v poli nachadza true, inak false)
bool najdi_bin_cykl_bool(int* pole, int velkost, int hladany){
int lavy_o=0;
int pravy_o=velkost-1;
while(lavy_o <= pravy_o){
int stred=(lavy_o + pravy_o)/2;
if (pole[stred] < hladany) lavy_o=stred+1;
else if (pole[stred] > hladany) pravy_o=stred-1;
else return true;
}
return false;
} |
//binarne vyhladavanie zadaneho prvku "hladany" pomocou rekurzie
//pole "pole" s poctom prvkov "velkost" musi byt usporiadane vzostupne
//(na zaciatku pola je prvok s najmensou hodnotou)
//funkcia vracia index zadaneho prvku v poli (v pripade neuspechu vyhladavania vracia -1)
int najdi_bin_rek_index(int* pole, int lavy_o, int pravy_o, int hladany){
while(lavy_o <= pravy_o){
int stred=(lavy_o + pravy_o)/2;
if (pole[stred] < hladany)
return najdi_bin_rek_index(pole, stred+1, pravy_o, hladany);
else if (pole[stred] > hladany)
return najdi_bin_rek_index(pole, lavy_o, stred-1, hladany);
else return stred;
}
return -1;
} |
//binarne vyhladavanie zadaneho prvku "hladany" pomocou rekurzie
//pole "pole" s poctom prvkov "velkost" musi byt usporiadane vzostupne
//(na zaciatku pola je prvok s najmensou hodnotou)
//funkcia vracia logicku premennu (ak sa zadany prvok v poli nachadza true, inak false)
bool najdi_bin_rek_bool(int* pole, int lavy_o, int pravy_o, int hladany){
while(lavy_o <= pravy_o){
int stred=(lavy_o + pravy_o)/2;
if (pole[stred] < hladany)
return najdi_bin_rek_bool(pole, stred+1, pravy_o, hladany);
else if (pole[stred] > hladany)
return najdi_bin_rek_bool(pole, lavy_o, stred-1, hladany);
else return true;
}
return false;
} |