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 :

Tris par insertion


Sujet :

Pascal

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Tris par insertion
    Bonjour,

    Me revoilà...

    J'ai un peu de soucis avec le tri par insertion, ce qui fait que je fais par étapes algorithmiques le développement mais je cale à la fin. J'ai mis le code en LDA, puisque je programme sur papier maitenant; il est tès proche du Pascal, sauf que c'est en français. Si soucis je le retranscrirai en Pascal.

    Voici un exemple de vecteur : 5 4 3 6 2
    Résultat du tri : 2 3 4 5 6
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    type vect est vecteurde 100 entier
     
    procédure trinsertion (v : vect ; n : entier )
     
    var j,i,tmp : entier
     
    pour j de 2 à n faire
     
         tmp := v[j]              
     
         i := j-1
     
              tantque (v[i]>tmp) et (i>=1) faire
     
                   v[i+1] := v[i]
     
                   i := i-1
     
              ftant
    fpour
     
    si (v[1]>tmp) alors
     
         v[2] := v[1]
     
         v[1] := tmp
     
    sinon
     
         v[i+1] := tmp
     
    fsi
     
    Fproc
    Développement pas à pas :
    • 1ère étape :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      tmp reçoit 4                                                         
      i reçoit 1                                                             
       
      tantque 5 est plus grand que 4 et 1>=1 faire           
       
      v(i+1) reçoit 5                                                       
       
      i reçoit 0
      Vecteur est alors trié comme ceci : 4 5 3 6 2
    • 2 ème étape :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      tmp reçoit 3                                                         
      i reçoit 2                                                             
       
      tantque 5 est plus grand que 3 et 2>=1 faire
      tantque 4 est plus grand que 3 et 1>=1 faire           
       
      v(i+1) reçoit 5...4                                                        
       
      i reçoit 1..0
      Vecteur est alors trié comme ceci : 3 4 5 6 2
    • 3 ème étape :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      tmp reçoit 6                                                         
      i reçoit 3                                                            
       
      tantque 5 est plus grand que 6 et 3>=1 faire
       
      v(i+1) reçoit rien                                                       
       
      i reçoit rien
      Vecteur est alors trié comme ceci : 3 4 5 6 2
    • 4 ème étape :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      tmp reçoit 2                                                         
      i reçoit 4                                                           
       
      tantque 6 est plus grand que 2 et 4>=1 faire
      tantque 5 est plus grand que 2 et 3>=1 faire
      tantque 4 est plus grand que 2 et 2>=1 faire
      tantque 3 est plus grand que 2 et 1>=1 faire
       
      v(i+1) reçoit 6...5...4...3                                                     
       
      i reçoit 3...2...1...0
      Vecteur est alors trié comme ceci : 2 3 4 5 6

    Mon problème est le suivant : je fais pas à pas l'algorithmique du pour et du tanque et je n'arrive pas à suivre en même temps l'algorithmique de la condition SI, puisque qu'il n'est pas inclus dans la boucle tantque.
    Si je le fais après mon tri n'est pas trié ><
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    si (v[1]>tmp) alors
     
         v[2] := v[1]
     
         v[1] := tmp
     
    sinon
     
         v[i+1] := tmp
     
    fsi
    Si quelqu'un pourait m'expliquer étape par étape ce serait super sympa !

    @++

  2. #2
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    principe du tri par sélection :
    chercher le plus petit élément dans le tableau et le mettre dans la premiére case du tableau
    ensuite chercher le second plus petit élément ( c a d faite la recherche en ignorant la premiére case du tableau puisqu'elle contient le plus petit élément) et le mettre dans la deuxième case du tableau et ainsi de suite

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. tri par insertion et Structures
    Par bonjour69 dans le forum C
    Réponses: 2
    Dernier message: 23/12/2005, 12h46
  3. [LG] Le tri par insertion d'un enregistrement
    Par phoebee dans le forum Langage
    Réponses: 4
    Dernier message: 01/09/2005, 20h38
  4. [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