Vous êtes sur la page 1sur 11

BSQUEDA BINARIA

El algoritmo de bsqueda binaria es un excelente mtodo para buscar datos dentro de una

estructura(generalmente un arreglo unidimencional). Se


le da el nombre de bsqueda binaria por que el algoritmo divide en dos el arreglo, aludiendo al concepto de bit, el cual puede tener dos estados.

La nica condicin para usar este algoritmo es que los


datos dentro del arreglo estn ordenados de menor a mayor.

La solucin mas fcil para realizar una bsqueda es por


fuerza bruta, pero este mtodo puede resultar bastante ineficiente cuando se tiene una gran cantidad de datos, ya que habra que buscar posicin por posicin hasta encontrar el dato que queremos.

El cdigo por fuerza bruta es bastante sencillo: for(int i=0; i<Arreglo.length; i++) if(Arreglo[i] == elemento) System.out.println("\nElemento encontrado en la posicion: " + i);

Solo se recorre todo el arreglo y verificamos si la


posicin i es igual al dato que queremos buscar, el cdigo anterior se puede mejorar simplemente agregndole una

bandera, pero aun as no es lo suficientemente bueno.

El algoritmo de bsqueda binaria es el siguiente: 1. Se declaran los ndices superior e inferior. El inferior en 0 y el superior con el tamao del arreglo menos 1. 2. Se calcula el centro del arreglo con la siguiente formula: centro = (superior + inferior) / 2

3. Verificamos si el arreglo en la posicin centro es igual al dato que buscamos. Si es igual significa que encontramos el dato y

retornamos centro.
4. Si son diferentes verificamos si el arreglo en la posicin centro es mayor al dato que queremos buscar. Si es mayor actualizamos superior: superior = centro - 1, si no actualizamos inferior: inferior = centro + 1.

5. Volvemos al paso 2.

Si cuando ya no se cumpla la condicin del ciclo y no se encontr el dato retornamos -1

indicando que el dato no se encuentra en el arreglo.

Supongamos que tenemos el arreglo {2, 3, 5, 7, 9, 11, 14, 18, 22, 25} y queremos buscar el dato 18, entonces el inferior toma el valor de 0 y superior el valor de 9 (ya que es tamao del arreglo menos 1).

Calculamos el centro, centro = (superior + inferior) / 2 centro = (9 + 0) / 2 centro = 4 divisin entera(ignorando la parte decimal). Arreglo en la posicin centro es 9 (Arreglo[centro] = 9) ya que se empieza a contar desde 0.

Comprobamos si arreglo en la posicin centro es igual al

dato que queremos buscar Arreglo[centro] =


dato, como Arreglo[centro] = 9 y dato = 18. no son iguales por lo tanto ahora verificamos si es mayor, en este

caso no lo es entonces actualizamos inferior = centro + 1,


esto hace que podamos descartar todos los datos del centro hacia atrs, esto reduce nuestro arreglo a {11, 14,

18, 22, 25}. Y as seguiremos hasta que Arreglo[centro] =


dato.

Como se puede notar este mtodo es bastante eficiente en arreglos grandes, por ejemplo supongamos que tenemos un arreglo de 10000 datos, y estamos buscando un dato que se encuentra en la posicin 6000, solo en la primera vuelta del ciclo ya se pueden descartar los primeros 5000 valores, en cambio por fuerza bruta se tendran que realizar esos 6000 ciclos para poder localizar el dato.

Vous aimerez peut-être aussi