[PYTHON] Tri rapide | Commande la plus importante

Mettre en œuvre un tri rapide

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.

Recommended Posts

Tri rapide | Commande la plus importante
Tri rapide