CONTENIDO DE LA LECCIÓN 18
CONTENIDO DE LA LECCIÓN 18
CONTENIDO DE LA LECCIÓN 18
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