Je ne comprends pas un bout de code [Résolu]

Signaler
Messages postés
109
Date d'inscription
samedi 9 avril 2016
Statut
Membre
Dernière intervention
12 novembre 2020
-
Messages postés
109
Date d'inscription
samedi 9 avril 2016
Statut
Membre
Dernière intervention
12 novembre 2020
-
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

Messages postés
13246
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 novembre 2020
743
bonjour,
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/
Messages postés
109
Date d'inscription
samedi 9 avril 2016
Statut
Membre
Dernière intervention
12 novembre 2020
11
Je venais de comprendre le sens du code en faisant des petits essais de mon coté, merci quand meme je clos le sujet