Allora, il problema è il seguente: sto scrivendo un programma riguardante una corsa di ciclisti, ed ho un vettore "int tempo[]={0,0,0,0,0}" dove memorizzo i tempi dei ciclisti, e un array di stringhe chiamato classifica (char classifica[5][20]) dove memorizzo i nomi dei ciclisti, e che una volta ordinato riporta in ordine i nomi della classifica. Premetto che in tempo[0] trovo il tempo del primo ciclista, e in classifica[0] il nome del primo ciclista (questa corrispondenza vale anche per gli altri ciclisti). 
Ora, vorrei sfruttare un algoritmo di ordinamento per ordinare il vettore tempo, e in contemporanea il l'array di stringhe, ho provato in questo modo:
    int tempo[]={0,0,0,0,0};
    char classifica[5][20],  el2[20];
int main()
{
    for (i=1;i<5;i++) {                                                 // ordinamento tempi e ciclisti
        el1 = tempo[i];
        el2[19] = classifica[i][19];
        j = i-1;
        while(j>=0 && el1 < tempo[j]) {
            tempo[j+1] = tempo[j];
            classifica[j+1][19] = classifica[j][19];
            j--;
        }
        tempo[j+1] = el1;
        classifica[j+1][19] = el2[19];
    }
    for (i=0; i < 5; i++) {
    printf("Al primo posto abbiamo %s con un tempo di %d.\n",  classifica[i], tempo[i]);
    }
    return 0;
}
Alla fine però i tempi risultano ordinati, ma i nomi non coincidono più con i tempi. Dov'è che sbaglio?