Ich versuche, meinen ersten schnellen Sortieralgorithmus für Stunden zu schreiben, aber immer noch nicht richtig. Das Ziel besteht darin, einen schnellen Sortiercode zum Sortieren eines Arrays zu schreiben. Ich möchte zwei Funktionen verwenden: rekursive Funktion quick_sort und Partitionsfunktion.Schnelle Sortierung funktioniert nicht nach der ersten Partition
Ich fand die Partitionsfunktion scheint korrekt auf jedem Sub-Array von der Division und Eroberung erzeugt, aber das zurückgegebene Gesamt-Array schien nicht nach der ersten Partition geändert (die erste Partition hat einen Effekt, während die zweite, dritte Partitionen , ..., schien keine Wirkung zu haben).
Ich muss hier etwas verpasst haben, irgendwelche Hinweise?
def partition(a, first, last):
x = a[0]
j = 0
for i in range((first+1), (last+1)):
if x >= a[i]:
j = j + 1
a[i], a[j] = a[j], a[i]
a[0], a[j] = a[j], a[0]
return j
def quicksort(a):
quick_sort(a, 0, len(a) - 1)
def quick_sort(a, first, last):
if first < last:
j = partition(a, first, last)
# devide a into two parts and do quicksort respectively
quicksort(a[:j])
quicksort(a[j+1:])
return a
a = [6.5, 4, 2, 3, 9, 8, 9, 4, 7, 6, 1]
quicksort(a)
ein [: j] ist anders Array, a Kopieren. Du solltest Quicksort (a, first, j), quicksort (a, j + 1, last) verwenden – UmNyobe
Das ist genau, wo ich verpasst habe! Vielen Dank UmNyobe – enaJ