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 :
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
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
-
Contributeurbonjour,
en programmation, il est préférable de ne pas supposer, et de plutôt lire la documentation.
cette page t'aidera à comprendre: https://zestedesavoir.com/articles/2505/les-bizarreries-du-langage-c-1/