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

Langage Delphi Discussion :

[Delphi] Explication de tris à insertion Linéaire


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut [Delphi] Explication de tris à insertion Linéaire
    Bonjour à tous ,

    Je viens de débuter la programmation pour initiation nous travaillons avec delphi en mode console donc le code source est +- le même que pascal du moins si ce que mon prof à dit est totalement exact.

    Donc le principe du tri à insertion linéaire je l'ai compris mais le code ci-dessous moi bien.

    Donc j'ai un vecteur v avec les valeurs suivantes 3 7 4 2 8 1 9 10 que je dois trier .

    Donc mon code est :

    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 TriInsertion (var  v:tvect)    //Tvect correspond au type du vecteur
     
    Var i,  j : integer ;  // j etant l'element du vecteur à la position i
          T: integer ;  //Correspond à une variable Temporaire.
    BEGIN 
    FOR i:= 2 TO N DO  // N Correspond à la dernier valeur de mon vecteur ou tableau
    BEGIN 
          T:= v[i];
          j:= i -1 ;
          WHILE (j < 0 ) and (v[j] >1 ) DO 
     
                BEGIN   
                V[J+1]:=v[j] ; Dec(j);
                END;
                v[j+1]:= T ;
          end;
    end.
    résultat du programme : 1 2 3 4 7 8 9 10
    Ma première question est pourquoi un while avec la condition qui suit dans le code ci-dessus ?

    Celui qui peut m'expliquer le code entier, pas en detail mais juste par ligne serait sympa .
    Ah oui, connaissez-vous aussi un bon site qui explique pour débutant les principes des tris ?

    Merci d'avance .

  2. #2
    Membre éclairé Avatar de Tuxico
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 662
    Points : 770
    Points
    770
    Par défaut
    hellow,

    alors la grosse différence entre turbo pascal et le pascal sont les librairies . En pascal, tout ce qui est lib graphique, vecteurs etc ne fonctionnent pas ^^ et turbo pascal est bcp plus lent par la même

    bon il y a déja une erreur dans ton code ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     ... 
    WHILE (j < 0 ) and (v[j] >1 ) DO 
     ...
    car j ne sera jamais plus petit que 0 ^^

    alors aussi tout ce qui est mot-clés (while,of,etc) ne les mets pas en majuscule ca embrouille ^^et indente ton code convenablement
    ★ Pascal/Java/C/xhtml,css/SQL/Mips
    ★ Linux/unix

  3. #3
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Tu peux trouver un bon cours sur les tris ici : http://www.dailly.info/algorithmes-de-tri/index.php
    et tu as plein d'exemples sur le forum 'Algorithmes'.

    Si tu ne comprends pas un algo, ce qui est le cas ici, essaye de le dérouler sur un exemple pour voir comment il fonctionne et recommence tant que tu n'as pas compris.

    Exemple :
    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
    36
    37
    38
    39
    40
    41
     
    v1 v2 v3 v4
    3  2  4  1
     
    // Premier passage : " i:= 2 ; T:= 2; j:= 1 "
    1: ((j = 1) > 0) et ((v[j] = 3) > 1) donc :
         v[2]:= 3; j:= 0;
    2: ((j = 0) < 0) => STOP.
    v[1]:= 2;
     
    // v1 v2 v3 v4
    // 2  3  4  1
     
    // 2ième passage : " i:=3; T:= 4; j:=2; "
     
    1: (2 > 0) et (3 > 1) donc :
         v[3]:= 3; j:= 1;
    2: (1 > 0) et (2 > 1) donc :
         v[2]:= 2; j:= 0;
    3 : STOP.
    v[1]:= 4;
     
    // v1 v2 v3 v4
    // 4  2  3  1
     
    // 3ième passage : " i:= 4; T:=1; j:=3; "
    1: (3 > 0) et (3 > 1) donc :
         v[4]:= 3; j:= 2;
    2: (2 > 0) et (2 > 1) donc :
         v[3]:= 2; j:= 1;
    3: (1 > 0) et (4 > 1) donc :
         v[2]:= 4; j:= 0;
    4: STOP.
    v[1]:= 1;
     
    // v1 v2 v3 v4
    // 1  4  2  3
     
    // 4ième passage : " i = 5 " => ( i > N) : STOP.
    // Résultat : 
    v[1] = 1 ; v[2] = 4 ; v[3] = 2 ; v[4] = 3.
    A moins que je me sois trompé dans le déroulement de ton algo (ce qui est tout à fait possible...) il ne fonctionne pas, même après avoir corrigé l'erreur dans la condition du "while".

    Ce qui est assez logique quand on y pense, parce qu'il n'y a aucune comparaison entre éléments ! Enfin il y'a juste une comparaison pour voir si l'élément est ou non supérieur à 1...

    Si c'est vraiment un algo de cours, il est bizarre. Mais ce serait pas la première fois qu'un prof se trompe.

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut tri à insertion
    Je vous remercie de vos réponses , je vais voir avec mon prof demain et je vous tiens au courant .


+ Répondre à la discussion
Cette discussion est résolue.

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