Partage
  • Partager sur Facebook
  • Partager sur Twitter

QuickSort et récusivité

Anonyme
    27 février 2016 à 20:41:37

    Bonjour,

    Je dois réaliser un algorithme de Tri Rapide avec pivot dans une seule et même liste. Pour le moment j'ai :

    Une fonction pivot qui selectionne un nombre aléatoirement dans ma liste, et il met les nombre plus grand que ce pivot au dessus. La position de mon pivot est : j-nb+1

    import random as rd #besoin pour avoir ma position aléatoire
    
    def pivot(L,i,j):
        pivot=rd.randint(i,j)
        L.insert(j+1,L[pivot]) #j'insere une copie de mon nombre pivot en bout de liste
        #L.pop(j-nb+1) #je ne sais pas si je dois garder ma copie ou non
        nb=0 #nombre de nombre plus grand que mon pivot
        for k in range(i,j+1):
            if L[k-nb]>L[j-nb+1]: #test si plus grand que pivot
                L.insert(j-nb+2,L[k-nb]) #si oui, place une copie puis on supprime la copie
                L.pop(k-nb)
                nb+=1 #incrémentation
        return(L[:j-nb],[L[j-nb+1]],L[j-nb:]) #inférieur au pivot , pivot , supérieur au pivot
    

    Puis je dois faire une fonction récursive qui doit traiter une liste à l'aide du pivot :

    def tri_Partiel(T,i,j):
        return(pivot(T,i,j))
             
    def tri_Rapide(T):   
        return(tri_Partiel(T,0,len(T)-1))

    Le code est loin d'être fini... comment faire ?



    • Partager sur Facebook
    • Partager sur Twitter

    QuickSort et récusivité

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown