Foro con Clase C/C++
Problema 3 en el capítulo 12
Oriol
Nº de hilos:3
Nº de mensajes:6
miércoles, 17 de febrero de 2021
Buenas,
Primero de todo felicitaros por vuestro trabajo. Estoy haciendo el curso de C/C++ y no acabo de entender el problema 3 del capítulo 12. En este hay que ordenar los números enteros de un array, y para ello debemos comparar el primero con el último, el segundo con el penúltimo, etc. Al menos es así como lo entiendo, y creo que estoy equivocado, ya que si lo hago así, nunca los ordenaré correctamente. Por ejemplo, si lo hago así este array quedaría de la siguiente manera:
{2,4,7,3,2,6} --> {2,2,3,7,4,6}
¿Lo he entendido bien o, efectivamente, me he equivocado?
Muchas gracias.
Salvador Pozo
Nº de hilos:0
Nº de mensajes:25
miércoles, 17 de febrero de 2021
Hola:
Gracias por escribir.
La idea del problema es implementar un algoritmo similar al de la burbuja, pero empezando por los dos extremos del array simultáneamente.
En tu ejemplo:
2 4 7 3 2 6
^ ^
Empezaríamos comparando 2 con 4 y 6 con 2. Como ambas comparaciones dan como resultado que el orden es correcto, pasamos a la siguiente posición:
2 4 7 3 2 6
^ ^
Comparamos 4 con 7 y 2 con 3. La primera comparación está en el orden correcto, la segunda no, así que intercambiamos posiciones y retornamos ese puntero al final.
2 4 7 2 3 6
^ ^
Ahora comparamos 7 con 2 y 6 con 3. Intercambiamos los primeros valores y pasamos ese puntero al principio.
2 4 2 7 3 6
^ ^
Comparamos de nuevo, 2 con 4 y 3 con 7. Intercambiamos el segundo par y pasamos el puntero al final.
2 4 2 3 7 6
^ ^
Comparamos 4 con 2 y 6 con 7. Intercambiamos ambos y volvemos los punteros al punto de origen.
2 2 4 3 6 7
^ ^
Y así sucesivamente.
No es un algoritmo muy eficaz, pero el objetivo del problema es aplicar el algoritmo, y no tanto que sea óptimo.
Hasta pronto.
Oriol
Nº de hilos:3
Nº de mensajes:6
jueves, 18 de febrero de 2021
Buenas,
Ahora tiene más sentido. :)
Muchas gracias.