06.05.2013 Views

CONTENIDO DE LA LECCIÓN 18

CONTENIDO DE LA LECCIÓN 18

CONTENIDO DE LA LECCIÓN 18

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

MIGUEL Á. TOLEDO MARTÍNEZ<br />

búsqueda binaria de cualquier arreglo ordenado puede determinarse encontrando la primera potencia de 2<br />

mayor que el número de elementos del arreglo.<br />

Ejemplo <strong>18</strong>.34<br />

El siguiente programa, BUSBIN.CPP, presenta la versión iterativa de la función busquedaBinaria() La<br />

función recibe cuatro argumentos: un arreglo de enteros b, un entero claveBusqueda, el índice bajo del<br />

arreglo y el índice alto del arreglo. Si la clave de búsqueda no es igual al elemento de la mitad de un<br />

subarreglo, se ajusta el índice bajo o alto para poder hacer la búsqueda en un subarreglo más pequeño. Si la<br />

clave de búsqueda es menor que el elemento central, el índice alto se establece a mitad – 1 y se continúa la<br />

búsqueda en los elementos de bajo a mitad – 1. Si la clave de búsqueda es mayor que el elemento central, el<br />

índice bajo se establece a mitad + 1 y se continúa la búsqueda en los elementos de mitad + 1 a alto. El<br />

programa emplea un arreglo de 15 elementos. La primera potencia de 2 mayor que la cantidad de elementos<br />

de este arreglo es 16 (2 4 ), por lo que se necesitan un máximo de 4 comparaciones para encontrar la clave de<br />

búsqueda. La función imprimirEncabezado() envía a la salida los índices del arreglo y la función<br />

imprimirFila() envía a la salida cada subarreglo generado durante el proceso de búsqueda binaria. El<br />

elemento central de cada subarreglo se marca con un asterisco (*), para indicar el elemento con el que se<br />

compara la clave de búsqueda.<br />

/* El siguiente programa: BUSBIN.CPP, ilustra el uso de la búsqueda binaria en un arreglo. */<br />

#include //Para cout y cin<br />

#include //Para setw()<br />

int busquedaBinaria(int[], int, int, int, int);<br />

void imprimirEncabezado(int);<br />

void imprimirFila(int[], int, int, int, int);<br />

void main(void)<br />

{<br />

const int TAMANO_ARREGLO = 15;<br />

int a[TAMANO_ARREGLO], clave, resultado;<br />

for(int i = 0; i < TAMANO_ARREGLO; i++)<br />

a[i] = 2 * i; //Crea los elementos del arreglo<br />

cout > clave;<br />

imprimirEncabezado(TAMANO_ARREGLO);<br />

resultado = busquedaBinaria(a, clave, 0, TAMANO_ARREGLO - 1, TAMANO_ARREGLO);<br />

if(resultado != -1)<br />

cout

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!