Zunächst sei "26" die Standardnummer (Pivot). Gegenstände größer als "26" nach links Stellen Sie etwas kleiner als "26" nach rechts. Weil es in links und rechts unterteilt werden kann Die gleiche Verarbeitung wird für jede getrennte Liste durchgeführt. Left[32, 65, 76, 43, 87, 59] Right[13, 22, 14]
Als nächstes wird Links sortiert, aber der Drehpunkt ist die erste "32". Durch Wiederholen dieses Vorgangs wird das folgende Ergebnis erhalten.
QuickSort.py
data = [26,13,32,65,76,22,43,87,14,59]
def QuickSort(data):
if len(data) <= 1: #Wenn weniger als eine Daten vorhanden sind, wird der Wert unverändert zurückgegeben
return data
#Verwenden Sie den ersten Wert in der Liste als Referenzdaten (Pivot).
pivot = data[0]
left, right, same = [], [], 0 #Initialisierung (Liste, Liste, 0)
for ii in data:
if ii > pivot:
left.append(ii) #Wenn größer als der Drehpunkt, nach links stellen
elif ii < pivot:
right.append(ii) #Wenn kleiner als der Drehpunkt, rechts einstellen
else:
same += 1 #Verschieben Sie nicht den gleichen Wert, sondern zählen Sie nur die Zahl
left = QuickSort(left) #Links sortieren
right = QuickSort(right) #Rechts sortieren
#Sortierte Daten zurückgeben und zusammen schwenken
return left + [pivot] * same + right
print(QuickSort(data))
#Ergebnis
# [87, 76, 65, 59, 43, 32, 26, 22, 14, 13]
Es scheint eine Möglichkeit zu geben, "Teilungsregel" zu sagen, aber die Teilung wird in kleinen Einheiten wiederholt und der Vorgang wird rekursiv wiederholt. Abhängig davon, wie Sie den Pivot auswählen, scheint es verschiedene Dinge zu geben, die schneller verarbeitet werden können.