IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Pascal Discussion :

Tri d'insertion récursif


Sujet :

Pascal

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Tunisie

    Informations forums :
    Inscription : Août 2006
    Messages : 193
    Points : 85
    Points
    85
    Par défaut Tri d'insertion récursif
    Hola ,
    voila , je veux transformer ce tri d'insertion en un tri d'insertion récursif or je ne suis pas très fort en récursivité de l'aide sera la bienvenue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    procedure tri_insertion(n : integer ; var t : tab );
    var
     x :integer ;
    begin
     for i:= 2 to n do
      begin
       j:=i ;
        while (t[j] <t[j-1]) and (j > 1) do 
         begin
          x:=t[j] ;
          t[j]:=t[j-1];
          t[j-1]:=x; 
          j:=j-1 ;
         end; 
      end;
    end;
    Voila mon essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    procedure tri_insertion(n : integer ; var t : tab ; i : integer);
    var
      x : integer ;
    begin
     if (i >= 2) and (i <= n) then 
      begin
       j:=i ;
        while (t[j] <t[j-1]) and (j > 1) do 
         begin
          x:=t[j] ;
          t[j]:=t[j-1];
          t[j-1]:=x; 
          j:=j-1 ;
         end;
     tri_insertion(n,t,i+1);
      end;
     end;
    remarque : à l'initialisation dans le programme principal
    i sera remplacer par 2.
    tri_insertion(n,t,2);

    Merci d'avance pour votre réponse.

  2. #2
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par WhiteTigerZ Voir le message
    Hola ,
    voila , je veux transformer ce tri d'insertion en un tri d'insertion récursif or je ne suis pas très fort en récursivité de l'aide sera la bienvenue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    procedure tri_insertion(n : integer ; var t : tab );
    var
     x :integer ;
    begin
     for i:= 2 to n do
      begin
       j:=i ;
        while (t[j] <t[j-1]) and (j > 1) do 
         begin
          x:=t[j] ;
          t[j]:=t[j-1];
          t[j-1]:=x; 
          j:=j-1 ;
         end; 
      end;
    end;
    Voila mon essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    procedure tri_insertion(n : integer ; var t : tab ; i : integer);
    var
      x : integer ;
    begin
     if (i >= 2) and (i <= n) then 
      begin
       j:=i ;
        while (t[j] <t[j-1]) and (j > 1) do 
         begin
          x:=t[j] ;
          t[j]:=t[j-1];
          t[j-1]:=x; 
          j:=j-1 ;
         end;
     tri_insertion(n,t,i+1);
      end;
     end;
    remarque : à l'initialisation dans le programme principal
    i sera remplacer par 2.
    tri_insertion(n,t,2);

    Merci d'avance pour votre réponse.
    Il faut déjà que la version itérative soit correcte !
    Le tri par insertion consiste à insérer un élément du tableau parmi ceux qui le précèdent et qui sont déjà triés. Ainsi pour le placer, on ne le permute pas avec tous les éléments qui lui sont inférieurs mais on les décale pour lui faire de la place.
    Commence donc par corriger ta version itérative.
    Écrire une procédure dont le temps de création dépend essentiellement de ma vitesse de frappe au clavier n'a pas le moindre intérêt !
    --- droggo.

  3. #3
    Membre confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    Par défaut re:bonjour
    Ta procédure est fausse
    je t'invite à regarder ça et ça
    Cordialement @+
    et vint le 20siècle et l'homme se mit à réflechir comme la machine auteur: diden138
    Langage: Pascal,OCaml,Delphi,c/c++.
    Langages web:Xhtml,Css,Php/Mysql,Javascript,Actionscript 2.0
    Plate forme:Windows XP Pro SP2./Red Hat 9.0/SUSE 10.2
    Config :Intel P4 3.2GHZ,2MO cach,512 RAM.
    Outils:Tp7,objective caml,Delphi 6 perso, C++builder 6,Visual C++ Express edition sous win,code-block sous linux(Ubuntu) .

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Tunisie

    Informations forums :
    Inscription : Août 2006
    Messages : 193
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par diden138 Voir le message
    Ta procédure est fausse
    je t'invite à regarder ça et ça
    Cordialement @+
    c'est juste

  5. #5
    Membre confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    Par défaut re:bonjour
    ok oublions le code qui est dans le lien
    on va décortiquer ta procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    procedure tri_insertion(n : integer ; var t : tab );
    var
     x :integer ;// i non déclaré j non déclaré 
    begin
     for i:= 2 to n do
      begin
       j:=i ; j=i-1 le premier élément tu le considère comme trié :?
        while (t[j] <t[j-1]) and (j > 1) do 
         begin
          x:=t[j] ;
          t[j]:=t[j-1];
          t[j-1]:=x; 
          j:=j-1 ;
         end; 
      end;
    end;
    Voila
    pour la version récursif qui mon sens n'a aucun avantage je ne l'a ferais pas par respect à la prog .
    Cordialement @+
    et vint le 20siècle et l'homme se mit à réflechir comme la machine auteur: diden138
    Langage: Pascal,OCaml,Delphi,c/c++.
    Langages web:Xhtml,Css,Php/Mysql,Javascript,Actionscript 2.0
    Plate forme:Windows XP Pro SP2./Red Hat 9.0/SUSE 10.2
    Config :Intel P4 3.2GHZ,2MO cach,512 RAM.
    Outils:Tp7,objective caml,Delphi 6 perso, C++builder 6,Visual C++ Express edition sous win,code-block sous linux(Ubuntu) .

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Tunisie

    Informations forums :
    Inscription : Août 2006
    Messages : 193
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par diden138 Voir le message
    ok oublions le code qui est dans le lien
    on va décortiquer ta procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    procedure tri_insertion(n : integer ; var t : tab );
    var
     x :integer ;// i non déclaré j non déclaré 
    begin
     for i:= 2 to n do
      begin
       j:=i ; j=i-1 le premier élément tu le considère comme trié :?
        while (t[j] <t[j-1]) and (j > 1) do 
         begin
          x:=t[j] ;
          t[j]:=t[j-1];
          t[j-1]:=x; 
          j:=j-1 ;
         end; 
      end;
    end;
    Voila
    pour la version récursif qui mon sens n'a aucun avantage je ne l'a ferais pas par respect à la prog .
    Cordialement @+
    Pour le "j" j'ai oublié de le déclaré.
    sinon le principe que j'ai utilisé est juste
    en effet, c'est comme pour un jeu de cartes, on trie les premiers éléments, ensuite, pour chaque élément suivant, on regarde où il doit se situer.
    Prenant l'exemple d'un prof qui a les notes de n élevés ,il prends une note quelconque supposée trier puis pour chaque copie, il regarde où elle doit se situer et ainsi de suite...
    Regarde ça si tu n'es pas encore convaincu
    http://asi.insa-rouen.fr/enseignants...insertion.html

Discussions similaires

  1. besoin d'aide pour le tri par insertion.
    Par argon dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 18/05/2006, 11h15
  2. [Delphi] Explication de tris à insertion Linéaire
    Par bobies dans le forum Langage
    Réponses: 3
    Dernier message: 21/03/2006, 15h12
  3. tri par insertion et Structures
    Par bonjour69 dans le forum C
    Réponses: 2
    Dernier message: 23/12/2005, 12h46
  4. [LG] Le tri par insertion d'un enregistrement
    Par phoebee dans le forum Langage
    Réponses: 4
    Dernier message: 01/09/2005, 20h38
  5. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo