Académique Documents
Professionnel Documents
Culture Documents
Algoritmo Iterativo
int bsqueda_binaria(vector <int> list, int val){
int der = list.size() - 1, izq = 0, m;
while(izq <= der){
m = (izq + der) / 2;
if(m == list[val]) return m; //la posicin del valor
if(m > list[val]) der = m 1;
else izq = m + 1;
}
return -1; // no se encontro el dato :P
}
Algoritmo Recursivo
// en este algoritmo se llema la funcion como sigue
// pos = bb_rec(list, 0, list.size() - 1);
int bb_rec(vector <int> list, int izq, int der int val){
int m = (izq + der) / 2;
if(izq > der) return -1; // no se encontro
if(list[m] == val) return m;
if(list[m] < val) return bb_rec(list, m + 1, der, val);
return bb_rec(list, izq, m 1 , val);
10
15
21
50
100
1564
1565
100000
50
100
1564
1565
100000
10
15
21
Si es el resultado devuelve su posicin, en otro caso busca de que lado esta el valor, y desecha la
mitad del arreglo
Paso 2: busca la mitad.
3
10
15
Si es el resultado devuelve su posicin, en otro caso busca de que lado esta el valor, y desecha la
mitad del arreglo
Paso 3: busca la mitad.
10
15