Ich habe eine kurze Sortiercode geschrieben. Es funktioniert gut, außer dass ein Element unsortiert bleibt. Ich habe versucht zu debuggen, aber vergeblich. Könnten Sie mir bitte helfen, den möglichen Fehler zu lokalisieren?Fehler bei der Auswahl eines mittleren Pivot-Elements in Python schnelle Sortierung
Hier ist der Code.
def qsort(l,start,end):
if start >= end :
return
i,j = start, end
pivot = (start + (end - start)/2)
while i<=j:
while(l[i] < l[pivot]):
i+=1
while(l[j] > l[pivot]):
j-=1
if(i<=j):
l[i],l[j] = l[j],l[i]
i+=1
j-=1
qsort(l,start,j)
qsort(l,i,end)
return l
a = [67,89,45,23,15,19,1,14,100]
print qsort(a,0,len(a)-1)
Die Ausgabe des obigen Codes ist [1, 14, 15, 23, 19, 45, 67, 89, 100]. Aus irgendeinem Grund sind die Positionen 23 und 19 nicht vertauscht.
Allerdings, wenn ich eine zufällige Dreh mit Pivot = random.randint wählen (fst, lst) Aussage, die ich ein vollständig sortiert bekommen list.Could jemand pls den Grund dafür erklären?
Dank. In meinem Code, wenn ich pivot = start wie Sie es tun, funktioniert es perfekt. Aber ich möchte immer noch verstehen, was möglicherweise falsch ist, wenn ich ein Pivot-Element in der Mitte der Liste auswähle. Wenn Sie mir erklären könnten, wäre es großartig. – DineshKumar