CONTENIDO DE LA LECCIÓN 18
CONTENIDO DE LA LECCIÓN 18 CONTENIDO DE LA LECCIÓN 18
MIGUEL Á. TOLEDO MARTÍNEZ búsqueda binaria de cualquier arreglo ordenado puede determinarse encontrando la primera potencia de 2 mayor que el número de elementos del arreglo. Ejemplo 18.34 El siguiente programa, BUSBIN.CPP, presenta la versión iterativa de la función busquedaBinaria() La función recibe cuatro argumentos: un arreglo de enteros b, un entero claveBusqueda, el índice bajo del arreglo y el índice alto del arreglo. Si la clave de búsqueda no es igual al elemento de la mitad de un subarreglo, se ajusta el índice bajo o alto para poder hacer la búsqueda en un subarreglo más pequeño. Si la clave de búsqueda es menor que el elemento central, el índice alto se establece a mitad – 1 y se continúa la búsqueda en los elementos de bajo a mitad – 1. Si la clave de búsqueda es mayor que el elemento central, el índice bajo se establece a mitad + 1 y se continúa la búsqueda en los elementos de mitad + 1 a alto. El programa emplea un arreglo de 15 elementos. La primera potencia de 2 mayor que la cantidad de elementos de este arreglo es 16 (2 4 ), por lo que se necesitan un máximo de 4 comparaciones para encontrar la clave de búsqueda. La función imprimirEncabezado() envía a la salida los índices del arreglo y la función imprimirFila() envía a la salida cada subarreglo generado durante el proceso de búsqueda binaria. El elemento central de cada subarreglo se marca con un asterisco (*), para indicar el elemento con el que se compara la clave de búsqueda. /* El siguiente programa: BUSBIN.CPP, ilustra el uso de la búsqueda binaria en un arreglo. */ #include //Para cout y cin #include //Para setw() int busquedaBinaria(int[], int, int, int, int); void imprimirEncabezado(int); void imprimirFila(int[], int, int, int, int); void main(void) { const int TAMANO_ARREGLO = 15; int a[TAMANO_ARREGLO], clave, resultado; for(int i = 0; i < TAMANO_ARREGLO; i++) a[i] = 2 * i; //Crea los elementos del arreglo cout > clave; imprimirEncabezado(TAMANO_ARREGLO); resultado = busquedaBinaria(a, clave, 0, TAMANO_ARREGLO - 1, TAMANO_ARREGLO); if(resultado != -1) cout
MIGUEL Á. TOLEDO MARTÍNEZ Ejemplo 18.35 { mitad = (bajo + alto) / 2; imprimirFila(b, bajo, mitad, alto, tamano); if(claveBusqueda == b[mitad]) //coincidencia return mitad; else if(claveBusqueda < b[mitad]) alto = mitad - 1; //Busca en la parte baja del arreglo else bajo = mitad + 1; //Busca en la parte alta del arreglo }//Fin de while return -1; //No se encontró claveBusqueda }//Fin de busquedaBinaria() //Imprime el encabezado para la salida void imprimirEncabezado(int tamano) { cout
- Page 1 and 2: MIGUEL Á. TOLEDO MARTÍNEZ CONTENI
- Page 3 and 4: MIGUEL Á. TOLEDO MARTÍNEZ LECCIÓ
- Page 5 and 6: MIGUEL Á. TOLEDO MARTÍNEZ ELEMENT
- Page 7 and 8: MIGUEL Á. TOLEDO MARTÍNEZ Con las
- Page 9 and 10: MIGUEL Á. TOLEDO MARTÍNEZ del arr
- Page 11 and 12: MIGUEL Á. TOLEDO MARTÍNEZ // MUES
- Page 13 and 14: MIGUEL Á. TOLEDO MARTÍNEZ que exp
- Page 15 and 16: MIGUEL Á. TOLEDO MARTÍNEZ Ejemplo
- Page 17 and 18: MIGUEL Á. TOLEDO MARTÍNEZ Ejemplo
- Page 19 and 20: MIGUEL Á. TOLEDO MARTÍNEZ void ma
- Page 21 and 22: MIGUEL Á. TOLEDO MARTÍNEZ PASO DE
- Page 23 and 24: MIGUEL Á. TOLEDO MARTÍNEZ void pa
- Page 25 and 26: MIGUEL Á. TOLEDO MARTÍNEZ Ejemplo
- Page 27 and 28: MIGUEL Á. TOLEDO MARTÍNEZ int bus
- Page 29 and 30: MIGUEL Á. TOLEDO MARTÍNEZ El cuer
- Page 31 and 32: MIGUEL Á. TOLEDO MARTÍNEZ /******
- Page 33 and 34: MIGUEL Á. TOLEDO MARTÍNEZ Ejemplo
- Page 35 and 36: MIGUEL Á. TOLEDO MARTÍNEZ Ejemplo
- Page 37 and 38: MIGUEL Á. TOLEDO MARTÍNEZ /* El s
- Page 39 and 40: MIGUEL Á. TOLEDO MARTÍNEZ escribi
- Page 41: MIGUEL Á. TOLEDO MARTÍNEZ /* El s
- Page 45 and 46: MIGUEL Á. TOLEDO MARTÍNEZ SOLUCI
- Page 47 and 48: MIGUEL Á. TOLEDO MARTÍNEZ // Busc
- Page 49 and 50: MIGUEL Á. TOLEDO MARTÍNEZ Paso 1
- Page 51 and 52: MIGUEL Á. TOLEDO MARTÍNEZ { j = i
- Page 53 and 54: MIGUEL Á. TOLEDO MARTÍNEZ un tama
- Page 55 and 56: MIGUEL Á. TOLEDO MARTÍNEZ necesit
- Page 57 and 58: MIGUEL Á. TOLEDO MARTÍNEZ { for (
- Page 59 and 60: MIGUEL Á. TOLEDO MARTÍNEZ // Comp
- Page 61 and 62: MIGUEL Á. TOLEDO MARTÍNEZ INICIAC
- Page 63 and 64: MIGUEL Á. TOLEDO MARTÍNEZ Esta ve
- Page 65 and 66: MIGUEL Á. TOLEDO MARTÍNEZ • Los
- Page 67 and 68: MIGUEL Á. TOLEDO MARTÍNEZ Es posi
- Page 69 and 70: MIGUEL Á. TOLEDO MARTÍNEZ p[100];
- Page 71 and 72: MIGUEL Á. TOLEDO MARTÍNEZ a) Cree
- Page 73 and 74: MIGUEL Á. TOLEDO MARTÍNEZ d) ¿cu
- Page 75 and 76: MIGUEL Á. TOLEDO MARTÍNEZ medio d
- Page 77 and 78: MIGUEL Á. TOLEDO MARTÍNEZ EXAMEN
MIGUEL Á. TOLEDO MARTÍNEZ<br />
Ejemplo <strong>18</strong>.35<br />
{<br />
mitad = (bajo + alto) / 2;<br />
imprimirFila(b, bajo, mitad, alto, tamano);<br />
if(claveBusqueda == b[mitad]) //coincidencia<br />
return mitad;<br />
else if(claveBusqueda < b[mitad])<br />
alto = mitad - 1; //Busca en la parte baja del arreglo<br />
else<br />
bajo = mitad + 1; //Busca en la parte alta del arreglo<br />
}//Fin de while<br />
return -1; //No se encontró claveBusqueda<br />
}//Fin de busquedaBinaria()<br />
//Imprime el encabezado para la salida<br />
void imprimirEncabezado(int tamano)<br />
{<br />
cout