Tri par insertion

Fermé
Utilisateur anonyme - 9 déc. 2012 à 20:40
 Utilisateur anonyme - 11 déc. 2012 à 20:53
Bonsoir à tous Bonsoir à tous, je bloque sur un programme avec le tri de tableau, je ne comprend pas comment marche le code en complet, en gros je sais que pour trier un tableau d'une taille x, il faut trier le sous-tableau composé des x-1 premières composantes puis insérer le xème élément à sa place. Le code est le suivant:


PROCEDURE tri_insertion(ENTIER n, ENTIER tableau [n] 
 DEBUT
  SI (n>1) ALORS
   DEBUT
tri_insertion(n-1,tableau);
insérer(n,tableau);
   FIN

le sous-programme <couleur nom="vertf">insérer</couleur>, quant à lui, prend la forme suivante:


PROCEDURE inserer(ENTIER n,ENTIER tableau[n])
 DEBUT
  ENTIER i,tmp;
  SI (tableau [n-1]> tableau[n] ALORS
   DEBUT
    tmp=tableau[n];
    i=n-1;
    TANT QUE (i>0 ET tableau[i]>tmp) REPETER
     DEBUT
      tableau[i+1]=tableau[i];
      i--;
     FIN
    tableau[i+1]=tmp;
   FIN
 FIN


Voila je ne sais pas comment interpréter ce code, si vous avez une idée?








1 réponse

Utilisateur anonyme
11 déc. 2012 à 20:53
Le langage machine "en interpréteur de commandes" que je vous ai envoyé au tout début enfin je ne sais pas si on l'apelle comme cela, ce n'est pas du langage machine qu'on tape directement dans un assembleur/compilateur tel que CodeBlocks.
Je ne comprend pas les lignes "tri_insertion(n-1,tableau);" ET "insérer(n,tableau);" je ne vois pas comment l'interpréter par écrit avec un exemple qui est un tableau de 6 caractères avec comme chiffres (6 1 3 4 5 2). C'est plus simple de la faire en itératif qu'en récursif mais je me doute un peu que la technique de tri n'est pas encore adéquate, le cours sert justement à cela, on nous montre des instructions avec certaines lignes pouvant être améliorées par après.
0