Tout d'abord, soit "26" le nombre standard (pivot). Éléments plus grands que "26" à gauche Réglez quelque chose de plus petit que "26" sur Droite. Parce qu'il peut être divisé en gauche et droite Le même traitement est effectué pour chaque liste séparée. Left[32, 65, 76, 43, 87, 59] Right[13, 22, 14]
Ensuite, Left est trié, mais le pivot est le premier "32". En répétant cela, le résultat ci-dessous sera obtenu.
QuickSort.py
data = [26,13,32,65,76,22,43,87,14,59]
def QuickSort(data):
if len(data) <= 1: #S'il y a moins d'une donnée, la valeur est renvoyée telle quelle
return data
#Utilisez la première valeur de la liste comme données de référence (pivot)
pivot = data[0]
left, right, same = [], [], 0 #Initialisation (liste, liste, 0)
for ii in data:
if ii > pivot:
left.append(ii) #Si plus grand que le pivot, placez-le à gauche
elif ii < pivot:
right.append(ii) #S'il est plus petit que le pivot, placez-le à droite
else:
same += 1 #Ne déplacez pas la même valeur, ne comptez que le nombre
left = QuickSort(left) #Trier à gauche
right = QuickSort(right) #Trier à droite
#Renvoyer les données triées et pivoter ensemble
return left + [pivot] * same + right
print(QuickSort(data))
#résultat
# [87, 76, 65, 59, 43, 32, 26, 22, 14, 13]
Il semble y avoir une façon de dire «règle de division», mais la division est répétée en petites unités et le processus est répété de manière récursive. En fonction de la façon dont vous choisissez le pivot, il semble que diverses choses peuvent être traitées plus rapidement.