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.

Tema cerrado

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.

Tema cerrado

Oriol

Nº de hilos:3

Nº de mensajes:6

jueves, 18 de febrero de 2021


Buenas,

Ahora tiene más sentido. :)

Muchas gracias.


Tema cerrado