下面为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]'更酷。 –