# 递归,终止条件?一步的操作?返回什么?
def quickSort(aList):
quickSortHelper(aList, 0, len(aList)-1)
def quickSortHelper(aList, first, last):
if first < last:
splitPosition = partition(aList, first, last)
quickSortHelper(aList, first,splitPosition-1)
quickSortHelper(aList,splitPosition+1, last)
def partition(aList, first, last):
pivotvalue = aList[first]
leftMark = first + 1
rightMark = last
done = False
while not done:
while leftMark <= rightMark and aList[leftMark] < pivotvalue:
leftMark += 1
while leftMark <= rightMark and aList[rightMark] > pivotvalue:
rightMark -= 1
if leftMark > rightMark:
done = True
else:
aList[leftMark], aList[rightMark] = aList[rightMark], aList[leftMark]
aList[rightMark], aList[first] = aList[first], aList[rightMark]
return rightMark
alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
quickSort(alist)
print(alist)