下面爲quicksort編寫的代碼沒有正確排序列表。代碼中必然存在一些邏輯缺陷。任何人都可以查看代碼嗎?python中的快速排序
def quicksort(aList, start, last):
i = start + 1
j = start + 1
pivot = aList[start]
while j <= last and pivot > aList[j]:
if pivot > aList[j]:
temp = aList[i]
aList[i] = aList[j]
aList[j] = temp
i = i + 1
j = j + 1
temp = aList[start]
aList[start] = aList[i-1]
aList[i-1] = temp
if i - start > 2:
quicksort(aList, start, i-2)
if last - i > 0:
quicksort(aList, i, last)
aList = [2, 5, 3, 95, 68, 75, 29, 52]
quicksort(aList, 0, len(aList)-1)
print aList
請告訴我們什麼是錯的。你期望什麼,你的代碼的結果是什麼? – 2014-02-24 11:15:31
這裏有一個提示可以幫助你找出錯誤的地方:在說'temp = aList [start]' – mbatchkarov
的行之前加上'print aList'另外,看看[PEP-8(Python代碼樣式指南) ](http://www.python.org/dev/peps/pep-0008/) - 不要使用製表符縮進 - 每個級別使用四個空格。在運算符周圍使用空格。避免不必要的括號。並且瞭解元組打包和解包:'alist [i],alist [j] = alist [j],alist [i]'更酷。 –