Hola, recién estoy aprendiendo a programar y no tengo muy claro lo de la ordenación, en todos los ejemplos que he visto, solo veo que hacen la ordenación de un solo dato, pero que pasa si un dato ordenado necesita ser mostrado junto a otro, por ejemplo ordenar el tiempo total de un ciclista en varias etapas, y al mostrar los tiempos totales ordenados, mostrar también a qué ciclista corresponde ese tiempo. No sé cómo hacer lo último, alguna idea de cómo se puede hacer?, esto es lo que he hecho hasta ahora:
Gracias de antemano!
Código c:
Ver original#include <stdio.h>
#include <stdlib.h>
void quicksort (int AcumEtapa[], int inf, int sup) ;
int main()
{
int ciclista, etapa, i;
//Guarda en un array el tiempo de cada un de las etapas de cada uno de los ciclistas.
int Array_Vuelta[3][5];
for (ciclista=0; ciclista<3; ciclista++){
for (etapa=0; etapa<5; etapa++){
printf("Ciclista %d - etapa %d: ", ciclista
, etapa
); scanf("%d", &Array_Vuelta
[ciclista
][etapa
]); }
}
int AcumEtapa[3];
int num=0;
//Guarda el acumulado del tiempo en cada una de las etapas
for (ciclista=0; ciclista<3; ciclista++){
AcumEtapa[num]=0;
for (etapa=0; etapa<5; etapa++){
AcumEtapa[num]+=Array_Vuelta[ciclista][etapa];
}
num++;
}
//Muestra el tiempo total de cada ciclista
for (i=0; i<3; i++){
printf("Ciclista %d - Total Etapa: %d", i
, AcumEtapa
[i
]); }
//llama a la funcion quicksort para ordenar los datos
quicksort(AcumEtapa, 0, 3);
//Muestra el tiempo total de cada ciclista ya ordenado
for (i=0; i<3; i++)
printf ("\n\tElemento[%d] = %d", i
, AcumEtapa
[i
]);
return 0;
}
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://
void quicksort (int AcumEtapa[], int inf, int sup)
{
int elem_div = AcumEtapa[sup];
int temp ;
int i = inf - 1, j = sup;
int cont = 1;
if (inf >= sup) /* Se cruzaron los indices ? */
return;
while (cont)
{
while (AcumEtapa[++i] < elem_div);
while (AcumEtapa[--j] > elem_div);
/* Se cumple la condicion ? */
if (i < j)
{
temp = AcumEtapa[i];
AcumEtapa[i] = AcumEtapa[j];
AcumEtapa[j] = temp;
}
else
cont = 0;
}
/* Dejamos el elemento de divisi¢n en su posici¢n final */
temp = AcumEtapa[i];
AcumEtapa[i] = AcumEtapa[sup];
AcumEtapa[sup] = temp;
/* Aplicamos recursivamente a los subAcumEtapas generados */
quicksort (AcumEtapa, inf, i - 1);
quicksort (AcumEtapa, i + 1, sup);
}
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://