CONTENIDO DE LA LECCIÓN 18
CONTENIDO DE LA LECCIÓN 18 CONTENIDO DE LA LECCIÓN 18
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
- 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 and 42: MIGUEL Á. TOLEDO MARTÍNEZ /* El s
- Page 43 and 44: MIGUEL Á. TOLEDO MARTÍNEZ Ejemplo
- Page 45 and 46: MIGUEL Á. TOLEDO MARTÍNEZ SOLUCI
- Page 47: MIGUEL Á. TOLEDO MARTÍNEZ // Busc
- 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 />
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