Vous êtes sur la page 1sur 2

ALGORITMO DE BUSQUEDA BINARIA

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);

Por ejemplo: si se quiere buscar el 10 en el siguiente arreglo:


3

10

15

21

50

100

1564

1565

100000

50

100

1564

1565

100000

Paso 1: La bsqueda binaria busca la mitad:


3

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

Como se encontr el resultado, se regresa su posicin que es la 3.


La complejidad de la bsqueda binaria de O( log2 n ).
Por ejemplo si se quiere buscar un numero en un arreglo de 1,000,000 de nmeros, la bsqueda
binaria solo requerir 20 pasos para encontrar el valor o determinar que no existe en el arreglo.
Nota: Recordemos que el arreglo debe estar ordenado para poder aplicar este algoritmo.

Vous aimerez peut-être aussi