Je ne comprends pas un bout de code

Résolu
kazute Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   -  
kazute Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   - 24 sept. 2020 à 18:30
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
A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 583
 
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/
0
kazute Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   20
 
Je venais de comprendre le sens du code en faisant des petits essais de mon coté, merci quand meme je clos le sujet
0