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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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!