Está en la página 1de 2

Bsqueda binaria o dicotmica Para utilizar este algoritmo, el array debe estar ordenado.

La bsqueda binaria consiste en dividir el array por su elemento medio en dos subarrays ms pequeos, y comparar el elemento con el del centro. Si coinciden, la bsqueda se termina. Si el elemento es menor, debe estar (si est) en el primer subarray, y si es mayor est en el segundo. Por ejemplo, para buscar el elemento 3 en el array {1, 2, 3, 4, 5, 6, 7, 8,9} se realizaran los siguientes pasos: Se toma el elemento central y se divide el array en dos: {1, 2, 3,4}5-{6, 7, 8,9} Como el elemento buscado (3) es menor que el central (5), debe estar en el primer subarray: {1, 2, 3,4} Se vuelve a dividir el array en dos: {1}2-{3,4} Como el elemento buscado es mayor que el central, debe estar en el segundo subarray: {3,4} Se vuelve a dividir en dos: {} 3-{4} Como el elemento buscado coincide con el central, lo hemos encontrado. Si al final de la bsqueda todava no lo hemos encontrado, y el subarray a dividir est vaco {}, el elemento no se encuentra en el array. La implementacin sera:

public static void main (String [] args) { int int int int [] x = { -5, 12, 15, 20, 30, 72, 456 }; loIndex = 0; hiIndex = x.length - 1; midIndex, srch = 0;

while (loIndex <= hiIndex) { midIndex = (loIndex + hiIndex) / 2;

if (srch > x [midIndex]) loIndex = midIndex + 1; else if (srch < x [midIndex]) hiIndex = midIndex - 1; else break; } if (loIndex > hiIndex) System.out.println (srch + " not found"); else System.out.println (srch + " found"); } }

En general, este mtodo realiza log (2, N+1) comparaciones antes de encontrar el elemento, o antes de descubrir que no est. Este nmero es muy inferior que el necesario para la bsqueda lineal para casos grandes. Este mtodo tambin se puede implementar de forma recursiva, siendo la funcin recursiva la que divide al array en dos ms pequeos

También podría gustarte