CONTENIDO DE LA LECCIÓN 18

CONTENIDO DE LA LECCIÓN 18 CONTENIDO DE LA LECCIÓN 18

azul2.bnct.ipn.mx
from azul2.bnct.ipn.mx More from this publisher
06.05.2013 Views

MIGUEL Á. TOLEDO MARTÍNEZ ¿Qué hay de los valores de regreso? ¿Necesita regresar la función un valor sencillo o una serie de valores? La función no necesita regresar ningún valor sencillo, deberá regresar el arreglo ordenado. Por lo tanto, la clase de valor regresado será void y el arreglo será un parámetro de referencia, ¿correcto? Recuerde que cuando se pasan los arreglos a las funciones C++, siempre son tratados como parámetros de referencia porque el nombre del arreglo representa una dirección en memoria. Por lo tanto, aquí está la descripción de la interfaz de la función clasifPorInser(): Función clasifPorInser(): Clasifica un arreglo de caracteres en orden ascendente. Acepta: Un arreglo de caracteres sin clasificar. Regresa: Un arreglo de caracteres clasificados. De la descripción anterior, la interfaz de la función se codifica fácilmente como: void clasifPorInser(char arreglo[MAX]) La interfaz dice que clasifPorInser() recibirá un arreglo de caracteres de tamaño MAX. El tipo regresado es void, porque no se regresa ningún valor sencillo. Sin embargo, debido a que el arreglo completo se pasa a la función, cualquier operación de clasificación sobre el arreglo dentro de la función se reflejará en el programa llamador. PLANEACIÓN DE LA SOLUCIÓN Antes de establecer el algoritmo, vamos a ver cómo trabaja la clasificación por inserción. Vea la figura 18.3. Suponga que vamos a clasificar un arreglo de 5 caracteres en orden ascendente. Antes de entrar en detalle, vea la figura de arriba abajo y de izquierda a derecha. El arreglo sin ordenar se muestra en la parte superior de la figura 18.3 y el arreglo ordenado se muestra en la parte inferior de la figura 18.3. Observe que el sombreado se emplea en la figura para mostrar el proceso de clasificación de arriba a abajo. Conforme procedemos desde el arreglo sin clasificar en la parte superior, el sombreado se incrementa, mostrando la porción del arreglo que está clasificado, hasta que el arreglo completo está sombreado en la parte inferior de la figura 18.3. La secuencia descendente muestra que se harán cuatro pasos a lo largo del arreglo para obtener al arreglo clasificado mostrado en la parte inferior de la figura. Con cada paso, un elemento se coloca dentro de su posición clasificada relativa a los elementos que se encuentran antes en el arreglo. El primer paso empieza con el primer elemento ‘E’, clasificado como se indica por medio del sombreado. Se considera que el carácter individual ‘E’ se clasifica por sí mismo, porque no tiene ningún elemento antes que él. De esta manera, la tarea en este primer paso es clasificar el segundo elemento, ‘D’, relativo al carácter ‘E’ que lo precede. El segundo paso empieza con los caracteres clasificados ‘D’ y ‘E’, como se indica por medio del sombreado. La tarea en este paso es clasificar el tercer carácter, ‘C’, en relación con estos dos caracteres. En el tercer paso se empieza con los caracteres clasificados ‘C’, ‘D’ y ‘E’, y la tarea es clasificar el carácter ‘B’ en relación con estos caracteres. Recuerde, en cada paso, la tarea es clasificar el primer carácter de la parte no clasificada del arreglo en relación con los caracteres que le preceden. El proceso continúa hasta que se clasifican todos los caracteres, como se muestra en la parte inferior de la figura 18.3. En cada paso se repite prácticamente lo que se hizo en el paso anterior. Como resultado, es posible identificar un proceso de repeticiones paso a paso, de arriba hacia debajo de la figura 18.3. Esta repetición dará origen a una estructura de ciclo en nuestro algoritmo. Ahora, la pregunta es: ¿qué sucede durante cada paso para clasificar finalmente al arreglo completo? Bueno, durante cada paso, el primer elemento en la parte no clasificada (sin sombrear) del arreglo se examina comparándolo a la secuencia clasificada de los elementos que le preceden. Si este elemento es menor que el anterior, estos dos elementos se intercambian y de nuevo el elemento anterior se compara con su predecesor, si es menor se intercambian y así sucesivamente. ARREGLOS, APUNTADORES Y ESTRUCTURAS – LECCIÓN 18 18-48

MIGUEL Á. TOLEDO MARTÍNEZ Paso 1 Paso 2 [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] CICLO EXTERNO Paso 3 Paso 4 E D C B A E D C B A D E C B A D E C B A D C E B A [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] ARREGLO CLASIFICADO C D E B A C D E B A C D B E A C B D E A CICLO INTERNO B C D E A B C D E A B C D A E B C A D E B A C D E A B C D E A B C D E Figura 18.3. La clasificación por inserción es un proceso de repeticiones anidadas Este proceso se repite hasta que sucede una de dos cosas: (1) el elemento es mayor o igual a su predecesor, o (2) el elemento está en la primera posición del arreglo (índice [0]) En otras palabras, el proceso de comparación o intercambio de izquierda a derecha que se muestra en la figura 18.3 termina cuando el elemento examinado se ha insertado en su posición adecuada en la parte clasificada del arreglo. Este proceso de comparación o intercambio que representa la repetición de izquierda a derecha en la figura 18.3 dará como resultado otra estructura de ciclo en nuestro algoritmo. Por lo tanto, es posible identificar dos procesos repetitivos en la figura 18.3, uno de arriba hacia abajo y otro de izquierda a derecha. ¿Cómo se relacionan los dos procesos repetitivos? Bien, parece que por cada paso de arriba abajo a través del arreglo, el proceso de comparación o intercambio se ejecuta de izquierda a derecha. De esta manera, el proceso de izquierda a derecha deberá anidarse dentro del proceso de arriba abajo. Esto se reflejará en nuestro algoritmo por medio de dos estructuras de ciclo: una controla el proceso de comparación o intercambio de izquierda a derecha que deberá anidarse dentro del segundo ciclo que controla el proceso de arriba abajo. Observe de nuevo la figura 18.3 para asegurarse que ve esta repetición anidada. Ahora que tiene una idea de cómo funciona la ordenación por inserción, analice el algoritmo formal: ARREGLOS, APUNTADORES Y ESTRUCTURAS – LECCIÓN 18 18-49

MIGUEL Á. TOLEDO MARTÍNEZ<br />

Paso 1<br />

Paso 2<br />

[0] [1] [2] [3] [4]<br />

[0] [1] [2] [3] [4] [0] [1] [2] [3] [4]<br />

[0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4]<br />

CICLO EXTERNO<br />

Paso 3<br />

Paso 4<br />

E D C B A<br />

E D C B A D E C B A<br />

D E C B A D C E B A<br />

[0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4]<br />

[0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4]<br />

[0] [1] [2] [3] [4]<br />

ARREGLO C<strong>LA</strong>SIFICADO<br />

C D E B A<br />

C D E B A C D B E A C B D E A<br />

CICLO INTERNO<br />

B C D E A<br />

B C D E A B C D A E B C A D E B A C D E A B C D E<br />

A B C D E<br />

Figura <strong>18</strong>.3. La clasificación por inserción es un proceso de repeticiones anidadas<br />

Este proceso se repite hasta que sucede una de dos cosas: (1) el elemento es mayor o igual a su predecesor,<br />

o (2) el elemento está en la primera posición del arreglo (índice [0]) En otras palabras, el proceso de<br />

comparación o intercambio de izquierda a derecha que se muestra en la figura <strong>18</strong>.3 termina cuando el<br />

elemento examinado se ha insertado en su posición adecuada en la parte clasificada del arreglo. Este<br />

proceso de comparación o intercambio que representa la repetición de izquierda a derecha en la figura <strong>18</strong>.3<br />

dará como resultado otra estructura de ciclo en nuestro algoritmo. Por lo tanto, es posible identificar dos<br />

procesos repetitivos en la figura <strong>18</strong>.3, uno de arriba hacia abajo y otro de izquierda a derecha. ¿Cómo se<br />

relacionan los dos procesos repetitivos? Bien, parece que por cada paso de arriba abajo a través del<br />

arreglo, el proceso de comparación o intercambio se ejecuta de izquierda a derecha. De esta manera, el<br />

proceso de izquierda a derecha deberá anidarse dentro del proceso de arriba abajo. Esto se reflejará en<br />

nuestro algoritmo por medio de dos estructuras de ciclo: una controla el proceso de comparación o<br />

intercambio de izquierda a derecha que deberá anidarse dentro del segundo ciclo que controla el proceso de<br />

arriba abajo. Observe de nuevo la figura <strong>18</strong>.3 para asegurarse que ve esta repetición anidada. Ahora que<br />

tiene una idea de cómo funciona la ordenación por inserción, analice el algoritmo formal:<br />

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

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

Saved successfully!

Ooh no, something went wrong!