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 rapide


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 60
    Points : 47
    Points
    47
    Par défaut Tri rapide
    Slt!

    Je voudrais réaliser un "tri rapide". J'ai lut une explication la dessus seulement je n'ais pas trop compris d'autant qu'il n'ait pas expliquer coment faire en cas d'un nombre de nombre impair et surtout en cas de deux nombre égaux.

    Est-ce que quelqu'un pourrait m'expliquer SVP?

    A+!

  2. #2
    Membre habitué Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Points : 155
    Points
    155
    Par défaut Re: Tri rapide
    Citation Envoyé par DBBB
    Je voudrais réaliser un "tri rapide".
    ...
    coment faire en cas d'un nombre de nombre impair
    je suppose que c'est le tri fusion, tu prends la partie entière, quand tu divises
    Citation Envoyé par DBBB
    et surtout en cas de deux nombre égaux.
    je ne vois pas où est le problème :
    que tu tries en mettant 1 1 ou 1 1 c'est pareil
    s'il n'y a que ces deux points, cela devrait aller pour programmer.

  3. #3
    Membre actif Avatar de Nicodemus
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 242
    Points : 212
    Points
    212
    Par défaut
    Je ne crois pas qu'il parle du tri fusion, mais bel et bien du tri rapide ou plutôt du quick sort. Il n'y a pas grand chose à comprendre là dessus. De toute façon l'algo est disponible en pseudo-langage et dans un paquet de langages de programmation sur le net.

    , c'est ton ami

  4. #4
    Membre habitué Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Points : 155
    Points
    155
    Par défaut
    sauf erreur de ma part il n'y pas d'histoire de parité dans le tri rapide vu qu'on utilise un pivot

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par PINGOUIN_GEANT
    sauf erreur de ma part il n'y pas d'histoire de parité dans le tri rapide vu qu'on utilise un pivot
    L'algo "classique" te dit de séparer ton tableau en deux parties égales, ce qui perturbe souvent les débutants lorsque le tableau est de cardinalité impaire.

    DBBB : En cas de cardinalité impaire, tu fais un arrondi : une des parties aura un élément de plus que l'autre, c'est tout, et ça ne changera pas le résultat final.

  6. #6
    Membre habitué Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Points : 155
    Points
    155
    Par défaut
    Citation Envoyé par Mac LAK
    L'algo "classique" te dit de séparer ton tableau en deux parties égales, ce qui perturbe souvent les débutants lorsque le tableau est de cardinalité impaire.
    Oui, l'algo classique du tri fusion mais pas du tri rapide ou alors j'ai un problème avec mes classiques.

  7. #7
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Effectivement, dans le quick sort, on ne divise pas en parties égales, mais selon un pivot, donc pas de problème de parité. Par contre pour la question des nombres égaux au pivot, tu peux soit les ignorer et les considérer comme plus petit (ou plus grand), tout simplement, soit prendre en compte ce cas, avec une petite amélioration du quick sort, intéressant pour certains types de tableaux. Je crois qu'une petite recherche sur "algorithme drapeau hollandais" sur Google pourrait t'aider.

    --
    Jedaï

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par PINGOUIN_GEANT
    Oui, l'algo classique du tri fusion mais pas du tri rapide ou alors j'ai un problème avec mes classiques.
    On te dit te prendre ton pivot au milieu du tableau, ce qui revient à découper en deux parties égales. Tout dépend de la manière dont on t'a expliqué le quick sort, moi c'était la variante récursive.

  9. #9
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu peux prendre le pivot au milieu, mais tu peux aussi le prendre à la fin, ou au début, statistiquement ça n'a aucune importance et c'est plus commode...
    Après ça dépend de tes données : si tu penses que ton tableau est déjà presque trié, il vaut sans doute mieux prendre un nombre au milieu du tableau, mais du poit de vue de l'algorithme, cela n'a strictement aucunement importance.

    --
    Jedaï

  10. #10
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    Citation Envoyé par Mac LAK
    Citation Envoyé par PINGOUIN_GEANT
    Oui, l'algo classique du tri fusion mais pas du tri rapide ou alors j'ai un problème avec mes classiques.
    On te dit te prendre ton pivot au milieu du tableau, ce qui revient à découper en deux parties égales. Tout dépend de la manière dont on t'a expliqué le quick sort, moi c'était la variante récursive.
    Cela ne sert à rien de vouloir prendre le pivot au milieu du tableau. La meilleur valeur pour le pivot et la valeur qui va permettre de placer autant de valeur à gauche qu'a droite du pivot. Or cette valeur n'est pas connue.

    Une stratégie classique pour chosir un pivot c'est de sélectionner trois valeurs et de prendre la valeur intermédiaire...

  11. #11
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Catbull
    Cela ne sert à rien de vouloir prendre le pivot au milieu du tableau. La meilleur valeur pour le pivot et la valeur qui va permettre de placer autant de valeur à gauche qu'a droite du pivot. Or cette valeur n'est pas connue.
    Je sais.

    Simplement, et pour finir sur le sujet, je rappelle que pour les débutants, quand on leur dit de partager le tableau en deux, ils pensent plus souvent à le partager suivant la cardinalité (d'où ma remarque sur la parité) que suivant la position de la valeur médiane (qui, comme tu le fais remarquer, n'est pas connue). Cependant, si la distribution du tableau non-trié est homogène et aléatoire, il y a de fortes probabilités que le pivot idéal soit justement près du milieu du tableau.

    Bien sûr, cette remarque n'a pas lieu d'être avec des développeurs confirmés, qui ont compris depuis longtemps comment marchent un QuickSort et cherchent en général à l'optimiser !

    Pour les débutants, il vaut peut-être mieux qu'ils s'attaquent d'abord à implémenter correctement l'algo dans une forme basique et non-optimisée avant d'attaquer directement les optimisations de tris, tu ne crois pas ? ;-)

    Sinon, il aurait fallu lui dire d'abandonner le QuickSort et d'utiliser un tri par casiers...

  12. #12
    Membre habitué Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Points : 155
    Points
    155
    Par défaut
    Citation Envoyé par Mac LAK
    Cependant, si la distribution du tableau non-trié est homogène et aléatoire, il y a de fortes probabilités que le pivot idéal soit justement près du milieu du tableau.
    si la répartition des valeurs est aléatoire (loi uniforme), c'est aussi bien de le prendre au début, au milieu ou à la fin.
    Par contre, je veux bien croire qu'avec un tabeau presque trié, il vaut mieux prendre au milieu.

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

Discussions similaires

  1. [liste] Problème de tri rapide
    Par sorry60 dans le forum C
    Réponses: 12
    Dernier message: 03/05/2006, 12h16
  2. Pb tri rapide
    Par Vinzius dans le forum C
    Réponses: 9
    Dernier message: 10/04/2006, 18h55
  3. tri rapide étéractif
    Par renardmp dans le forum Général Python
    Réponses: 3
    Dernier message: 20/02/2006, 02h12
  4. Tri rapide
    Par mikees dans le forum Assembleur
    Réponses: 1
    Dernier message: 19/12/2005, 21h53
  5. Tri Rapide sur un CLIST
    Par ensisoft dans le forum MFC
    Réponses: 9
    Dernier message: 13/12/2005, 23h22

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