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

Algorithmes et structures de données Discussion :

tri liste de pointeurs


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 31
    Par défaut tri liste de pointeurs
    Bonjour,

    Je débute en algo, et je cherche un moyen de trier une liste accessible par pointeurs.

    Je commence par comparer la tete de la liste au suivant.
    Si superieur, je passe au pointeur suivant, sinon j'insere, et ansi de suite jusqu'a la queue de la liste.

    Mais comment savoir combien de "tours" je dois faire ?

    Pour un tableau classique, il suffit de faire la même iteration avec la 2eme case et ansi de suite.
    Mais avec des pointeurs, je vois pas ...

    Merci pour vos conseils
    Matthieu

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Appelons ta liste L1
    A mon avis, le meilleur moyen est de créer une nouvelle liste vide au départ, L2
    Tu mets en tête de L2 la tête de L1
    puis tu prends le second terme de L1, s'il est inférieur au premier terme de L2 tu le mets en tête, sinon en queue.
    Et ainsi de suite tu parcoures L1 et tu places chaque nouvel élément à sa place dans L2 qui est, elle, toujours triée. (C'est un tri par insertion)
    A la fin ton résultat est dans L2
    Autre possibilité: si tu dois trier 'en place' (recopie interdite), alors là, le mieux est d'implémenter le tri 'à bulles', (il te suffit de savoir inverser deux éléments consécutifs-mais attention au cas particuliers des deux extrêmes) car avec des listes chainées, les algos plus élaborés risquent d'être difficiles à implémenter, spécialement si tu ne disposes pas d'indices pour les repérer, s'il y a des doublons etc, c'est plein de peaux de banane).
    Est-ce assez clair ?
    Mais comment savoir combien de "tours" je dois faire ?
    Disons n-1 tours où n est le nombre d'éléments de la liste (comme pour un tableau)
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  3. #3
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par Zavonen Voir le message
    Autre possibilité: si tu dois trier 'en place' (recopie interdite), alors là, le mieux est d'implémenter le tri 'à bulles', (il te suffit de savoir inverser deux éléments consécutifs-mais attention au cas particuliers des deux extrêmes) car avec des listes chainées, les algos plus élaborés risquent d'être difficiles à implémenter, spécialement si tu ne disposes pas d'indices pour les repérer, s'il y a des doublons etc, c'est plein de peaux de banane).
    Est-ce assez clair ?
    Le tri fusion est très simple à implémenter avec des listes chaînées.

    --
    Jedaï

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 31
    Par défaut
    Merci pour vos conseils

    Le tri par insertion me parait simple
    Je vais également jeter un oeil sur le tri par fusion

    Merci et a+
    Matthieu

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/10/2006, 16h33
  2. [LG]Liste de pointeurs
    Par kmitz dans le forum Langage
    Réponses: 10
    Dernier message: 02/04/2005, 03h57
  3. [LG]Liste de pointeurs de type pointer
    Par tom_snop dans le forum Langage
    Réponses: 4
    Dernier message: 30/03/2005, 00h40
  4. fuite de memoire dans une liste de pointeur sur composant
    Par Nicolos_A dans le forum Composants VCL
    Réponses: 2
    Dernier message: 16/12/2004, 09h46
  5. [LG]liste chainee + pointeur + affichage
    Par k_ro dans le forum Langage
    Réponses: 6
    Dernier message: 17/01/2004, 14h58

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