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 :
× 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.