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

C Discussion :

Trier des listes chaînées


Sujet :

C

  1. #1
    Membre du Club Avatar de colocolo
    Inscrit en
    Février 2007
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 166
    Points : 61
    Points
    61
    Par défaut Trier des listes chaînées
    si quelqu 'u peut nous eclairer sur :
    le tri par selection des listes chainee
    tri par insertion des listes chainee

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    bonjour, merci au revoir, et surtout merci Google :-)

    je tape "tri par selection" et hop : http://lwh.free.fr/pages/algo/tri/tri_selection.htm

    trop dur :-(

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    ok j'ai vu de quoi tu parlais, mais il aurait fallu que tu mettes ton post du forum Java ici, parce qu'est du C...

    Je recopie donc ici ton code :

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
     
    // Tri selection
        ////////////////
        static Liste Tri_Selection_Liste(Liste l)
        {
     if (l == null)
         return null ;
     
     // Recherche du minimum : attention au decalage d'un cran de l1 et l2
     Liste l1 = l, l2 = null ; ;
     int min = l.elt ;
     while (l1.suivant != null) {
         if (l1.suivant.elt < min) {
      min = l1.suivant.elt ;
      l2 = l1 ;
         }
         l1 = l1.suivant ;
     }
     
     // On supprime le minimum de la liste
     if (l2 == null) {
         l.suivant = Tri_Selection_Liste(l.suivant) ;
         return l ;
     }
     else {
         l1 = l2.suivant ;
         l2.suivant = l2.suivant.suivant ;
         l1.suivant = Tri_Selection_Liste(l) ;
         return l1 ;
     }
        }
     
        // Tri insertion
        ////////////////
        static Liste Tri_Insertion_Liste(Liste l)
        {
     // On prend le premier element
     Liste l2 = l ;
     l = l.suivant ;
     l2.suivant = null ;
     
     // On ajoute les elements suivants
     while (l != null) {
         if (l.elt < l2.elt) {
      Liste l1 = l ;
      l = l.suivant ;
      l1.suivant = l2 ;
      l2 = l1 ;
         }
         else {
      Liste l1 = l ;
      l = l.suivant ;
      l1.suivant = null ;
      Ajout_Trie_Liste(l2, l1) ;
         }
     }
     return l2 ;
        }
     
        // Fonction d'ajout d'un element dans une liste triee
        static void Ajout_Trie_Liste(Liste l, Liste l1) {
     if (l.suivant == null) {
         l.suivant = l1 ;
     }
     else if (l1.elt < l.suivant.elt) {
         l1.suivant = l.suivant ;
         l.suivant = l1 ;
     }
     else
         Ajout_Trie_Liste(l.suivant, l1) ;
        }
    C'est assez simple.

    Ce que tu appelles "tri par insertion", c'est juste ajouter un élément entre 2 valeurs ..

    chaque élément de la liste a une valeur...
    à priori rangés par ordre croissant.

    Quand tu veux insérer un nouvel élément, il parcoure la liste jusqu'à arriver à la bonne valeur (il s'arrête dès qu'il trouve une valeur supérieure ou égale à la valeur qu'il veut mettre) et là il insère l'élément dans la liste.

    Quand à l'autre, il cherche à ajouter par "le début" .. il cherche le minimum, et il remplace le minimum par cette nouvelle valeur (ce qui entre nous est un petit peu stupide vu d'ici parce qu'à priori il a trié les valeurs par ordre croissant)....

Discussions similaires

  1. trier des listes entières ?
    Par SimonLib dans le forum jQuery
    Réponses: 2
    Dernier message: 31/10/2011, 15h01
  2. fonctions des listes chaînées, et problème avec le main
    Par bounadalvidal dans le forum Débuter
    Réponses: 2
    Dernier message: 25/09/2010, 18h04
  3. Réponses: 6
    Dernier message: 14/02/2008, 13h16
  4. Trier des List implementant Comparable
    Par selvie dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 21/10/2007, 13h32
  5. [MySQL] Trier des listes
    Par unmulot dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 18/07/2006, 11h01

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