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

Python Discussion :

Algorithme de tri rapide �trange


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2019
    Messages
    1
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 1
    Par d�faut Algorithme de tri rapide �trange
    Bonjour, et bonne ann�e � tous.
    Je viens ici car j"'ai un probl�me avec une annale de concours : Informatique commune 2018, pr�cis�ment � la 14 qui porte sur un algorithme de tri rapide impos� :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def triRapide ( liste ,g , d ) :
        #pivot = # À compléter
        i = g
        j = d
        while True :
            while i <= d and liste [ i ][0] < pivot : i = i +1
            while j >= g and liste [ j ][0] > pivot : j = j -1
            if i > j : break
            if i < j : liste [ i ] , liste [ j ] = liste [ j ] , liste [ i ]
        i = i +1
        j = j -1
        if g < j : triRapide ( liste ,g , j )
        if i < d : triRapide ( liste ,i , d )
    les arguments sont une liste � trier et 2 indices.
    la liste � trier est une liste L de 2 listes; repr�sentant la hauteur pour la premi�re (liste h) et la p�riode pour la seconde (liste p) de diff�rentes vagues tri�es dans l'ordre chronologique.
    Le but de la question est de compl�ter la ligne 2 (pivot) et de d�terminer la valeur des indices g et d lors du premier appel (fonction r�cursive) pour trier la liste L selon les valeurs croissantes de la liste h. la liste p doit donc aussi �tre modifi�e pour rester coh�rent.

    Mon probl�me, c'est que je comprend pas du tout o� veut en venir cette fonction : boucle infinie rompue par un brak, alors que mon prof s'�nerve d�s qu'on utilise des break, un tri pr�sent� comme "tri rapide" alors qu'il n'a rien � voir avec mon cours, 3 param�tres, et une fonction r�cursive sans return. C'est courant, les fonctions r�cursives sans return ? moi c'est la premi�re fois que j'en vois. :/

    bref, je coince. vous pouvez m'aider � r�ponde � cette question s'il vous pla�t ?

  2. #2
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 774
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : Architecte technique retrait�
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 774
    Par d�faut
    Salut,

    Citation Envoy� par HenryDeNohr Voir le message
    et une fonction r�cursive sans return. C'est courant, les fonctions r�cursives sans return ? moi c'est la premi�re fois que j'en vois. :/
    La "fonction" n'a pas besoin de "return"er quoi que ce soit car elle trie la liste/tableau "in place".
    Ce genre d'algo. datant des ann�es 60, il y a plein d'articles sur le sujet qu'un peu de recherche sur Internet vous permettrait de trouver pour avoir explications dans tous les sens et exemples de code.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirm�
    Avatar de tyrtamos
    Homme Profil pro
    Retrait�
    Inscrit en
    D�cembre 2007
    Messages
    4 486
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par d�faut
    Bonjour,

    Il s'agit bien de l'algorithme de tri rapide "Quicksort" de Tony Hoare publi� en 1961 (https://en.wikipedia.org/wiki/Quicksort)

    Selon le principe, g et d repr�sente � chaque appel l'indice de d�but et l'indice de fin de la partie de la liste � trier. Au 1er appel, g et d seront donc le 1er et le dernier indice de la liste.

    Quand au pivot, il s'agit couramment de l'�l�ment de la liste situ� au milieu de la partie de la liste � trier.

  4. #4
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 515
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 515
    Par d�faut
    Citation Envoy� par tyrtamos Voir le message
    Quand au pivot, il s'agit couramment de l'�l�ment de la liste situ� au milieu de la partie de la liste � trier.
    Ce n'est pas l'algo recommand�. Robert Sedgewick, qui a fait une th�se sur le tri rapide, conseille de prendre comme pivot le m�dian parmi le premier �l�ment, celui du milieu et le dernier. Par exemple, pour le tableau [10, 2, 4, 1, 7], on regarde les trois �l�ments 10, 4 et 7 et on prend le m�dian de ces trois, c'est-�-dire 7 (car 4 < 7 < 10). Donc, dans mon exemple, on prendrait comme pivot le dernier �l�ment.

  5. #5
    Expert confirm�
    Avatar de tyrtamos
    Homme Profil pro
    Retrait�
    Inscrit en
    D�cembre 2007
    Messages
    4 486
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par d�faut
    Bonjour,

    La m�diane est effectivement une bonne solution dans le cas g�n�ral.

    En tout cas, le choix du pivot est important, pour �viter une d�gradation du temps de traitement en fonction de la pr�sentation des donn�es � trier: al�atoires, d�j� partiellement tri�es (ordre direct ou inverse), etc...

  6. #6
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 774
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : Architecte technique retrait�
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 774
    Par d�faut
    Citation Envoy� par tyrtamos Voir le message
    La m�diane est effectivement une bonne solution dans le cas g�n�ral.
    Para�trait que non (selon wikipedia) et la publication en 2009 d'un algo. qui utilise un "dual pivot".


    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Expert confirm�
    Avatar de tyrtamos
    Homme Profil pro
    Retrait�
    Inscrit en
    D�cembre 2007
    Messages
    4 486
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par d�faut
    Bonjour wiztricks,

    (le lien donn� est cass�)

    Tout d�pend comment on calcule la m�diane. Si on veut calculer la "vraie" m�diane, cela complexifie le calcul � chaque appel r�cursif, et ce n'est plus recommand�. Mais une version tr�s simplifi�e comme propos� par Pyramidev reste acceptable � mon avis et repr�sente une petite am�lioration de la version que j'avais propos�e.

    Ce tri est tr�s efficace en moyenne, mais pour qu'il le soit dans tous les cas, il y a une foultitude d'am�liorations propos�es les 50 derni�res ann�es. Y compris de changer d'algorithme pour les petites partitions...

  8. #8
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 774
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : Architecte technique retrait�
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 774
    Par d�faut
    Citation Envoy� par tyrtamos Voir le message
    (le lien donn� est cass�)
    A priori, c'est r�par�.
    Sinon il est mentionn� dans l'article QuickSort de wikipedia (note 11).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Tri rapide - un nouvel algorithme pour concurrencer Quick Sort ?
    Par laurent_ott dans le forum Algorithmes et structures de donn�es
    R�ponses: 18
    Dernier message: 16/11/2016, 15h17
  2. Algorithme de Tri Rapide - QuickSort algorithm
    Par LenyEdwarx dans le forum D�buter avec Java
    R�ponses: 2
    Dernier message: 05/02/2015, 09h29
  3. Tri Rapide sur un CLIST
    Par ensisoft dans le forum MFC
    R�ponses: 9
    Dernier message: 13/12/2005, 23h22
  4. algorithme de tri tableau :afficher que les �l�ments unique
    Par sofiane61 dans le forum Algorithmes et structures de donn�es
    R�ponses: 19
    Dernier message: 31/03/2005, 19h50
  5. Tri rapide
    Par DBBB dans le forum Algorithmes et structures de donn�es
    R�ponses: 11
    Dernier message: 10/12/2004, 17h54

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