Je ne comprends pas un bout de code

Résolu
Bonjour,

Je me renseignais sur le tri par fusion dans les différents langages et je suis tombé sur un bout de code en C que je ne comprends pas :

void fusion (int *a, int n, int m) {
    int i=0, j=m, k;
    int *x = malloc(n * sizeof (int));
    for (k = 0; k < n; k++) {
        x[k] = j == n      ? a[i++]
             : i == m      ? a[j++]
             : a[j] < a[i] ? a[j++]
             :               a[i++];
    }
    for (i = 0; i < n; i++) {
        a[i] = x[i];
    }
    free(x);
}


En effet, je ne comprends pas ce qui est effectué dans la boucle for.

Je suppose qu'on dit que x[k] est égale a j et qu'on verifie que j est égale a n mais pour le point d'interrogation et ce qui suit je ne comprends pas.

Merci d'avance et bonne soirée

1 réponse