ich bin dabei, einen Quicksort-Algorithmus zu schreiben, welcher nach dem folgenden Muster läuft:
-Pivot = erste Zahl der Liste
-i = Cursor, der von links so lange durchläuft wie die Zahl kleiner als die Pivot Zahl ist.
-j = Cursor, der von rechts so lange durchläuft, wie die Zahl größer als die Pivot Zahl ist
Wenn beide stehen bleiben, sollen die entsprechenden Zahlen getauscht werden
Wenn der rechte Cursor den linken überholt, dann wird die Liste zwischen den beiden Zahlen, auf denen die Cursor stehen in zwei neue Listen geteilt und das ganze beginnt von vorne. Leider bin ich hier bei diesem Code in einer Endlosschleife gefangen:
Code: Alles auswählen
def quicksort(liste):
list = liste[:]
if len(list) == 1 or len(list) == 0:
return list
else:
p = list[0]
i = 0
j = -1
while i < j:
while list[i] <= p:
i = i+1
while list[j] >= p:
j = j-1
if list[i] > p and list[j] < p:
x = list[i]
list[i] = list[j]
list[j] = x
i = i+1
j = j-1
if i > j:
links = list[:i]
rechts = list[i:]
return quicksort(links) + quicksort(rechts)
Könnte mir jemand vielleicht helfen?