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 />

medio de la función clasifPorBur() para intercambiar dos elementos del arreglo como se muestra<br />

en el algoritmo. Escriba sus funciones para clasificar un arreglo de caracteres. Incorpórelas dentro<br />

de un programa para que verifique el procedimiento de clasificación. ¿Por qué la clasificación<br />

por burbuja es menos eficiente que la clasificación por inserción?<br />

21. Otro algoritmo de clasificación iterativa común es clasificación por selección. El algoritmo es como éste:<br />

clasifPorSelec()<br />

Inicio<br />

para indice1 = (primer índice del arreglo) hasta (ultimo índice del arreglo) hacer<br />

posición = indice1.<br />

masPequeno = A[Posicion].<br />

para indice2 = (indice1 + 1) hasta (ultimo índice del arreglo) hacer<br />

si A[indice2] < masPequeno<br />

posicion = indice2.<br />

masPequeno = A[posicion].<br />

A[posicion] = A[indice1].<br />

A[indice1] = masPequeno.<br />

Fin.<br />

Como en la clasificación por burbuja, la clasificación por selección realiza diversos pasos a través<br />

del arreglo. En el primero de ellos examina al arreglo completo y coloca los elementos más<br />

pequeños en la primera posición del arreglo. En el segundo paso se examina el arreglo empezando<br />

en el segundo elemento. Se encuentra el elemento más pequeño en el segmento del arreglo y se<br />

coloca en la segunda posición del arreglo. El tercer paso examina el arreglo empezando en el tercer<br />

elemento, encuentra el elemento más pequeño en el segmento del arreglo y lo coloca en la tercera<br />

posición del elemento. El proceso continúa hasta que no quedan más segmentos del arreglo.<br />

Su trabajo es codificar el algoritmo anterior como una función C++ de nombre clasifPorSelec()<br />

Escriba su función para clasificar un arreglo de caracteres. Después úsela en un programa que<br />

verifique el procedimiento de clasificación.<br />

¿Por qué la clasificación por selección es menos eficiente que la clasificación por inserción?<br />

22. Escriba un programa que tome un arreglo entero sin ordenar y encuentre la localización del valor<br />

máximo en el arreglo. (Sugerencia: copie el arreglo dentro de otro y clasifique este segundo arreglo<br />

para determinar su valor máximo. Después busque el arreglo original para este valor)<br />

Problemas de recursividad<br />

23. (Ordenamiento por selección) El ordenamiento por selección busca en un arreglo el elemento más pequeño, el<br />

cual se intercambia con el primero del arreglo. El proceso se repite con el subarreglo que comienza en el<br />

segundo elemento del arreglo. Cada pasada por el arreglo da como resultado la colocación de un elemento en su<br />

lugar correcto. El desempeño de este ordenamiento es comparable con el ordenamiento de burbuja: para un<br />

arreglo de n elementos, se necesita hacer n-1 pasadas y por cada subarreglo, hay que hacer n-1 comparaciones<br />

para encontrar el valor más pequeño. Cuando el subarreglo que se está procesando sólo contiene un elemento, el<br />

arreglo está ordenado. Escriba la función recursiva clasifOrdenamiento()<br />

24. (Palíndromos) Un palíndromo es una cadena que se pronuncia igual hacia delante que hacia atrás. Algunos<br />

ejemplos son: radar, anilina y dábale arroz a la zorra el abad. Escriba una función recursiva<br />

pruebaPalindrome() que devuelva verdadero si la cadena almacenada en el arreglo es un palíndromo y falso si<br />

no. La función deberá ignorar los espacios y la puntuación en la cadena.<br />

25. (Búsqueda lineal) Modifique el ejemplo <strong>18</strong>.33 para que emplee la función recursiva busquedaBinaria() para<br />

llevar a cabo una búsqueda lineal en el arreglo. La función deberá recibir como argumentos un arreglo de<br />

enteros y su tamaño. Si se encuentra la clave de búsqueda, devuelva el índice del arreglo; de otro modo,<br />

devuelva –1.<br />

26. (Búsqueda binaria) Modifique el programa del ejemplo <strong>18</strong>.34 para que utilice una función recursiva<br />

busquedaBinaria() que lleve a cabo una búsqueda binaria en el arreglo. La función deberá recibir como<br />

argumentos un arreglo de enteros y el índice inicial y el final. Si se encuentra la clave de búsqueda, devuelva el<br />

índice del arreglo; de otro modo, devuelva –1.<br />

ARREGLOS, APUNTADORES Y ESTRUCTURAS – <strong>LECCIÓN</strong> <strong>18</strong> <strong>18</strong>-75

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

Saved successfully!

Ooh no, something went wrong!