def quickSort(arr, l, r):
if(l >= r): return
temp = arr[l] # 选取arr[l]作为pivot.
i, j = l, r
while(i < j):
while(j > i and arr[j] >= temp): j -= 1
arr[i] = arr[j]
while(i < j and arr[i] <= temp): i += 1
arr[j] = arr[i]
arr[i] = temp
quickSort(arr, l, i-1)
quickSort(arr, i+1, r)
nums = [5,2,3,1]
quickSort(nums, 0, len(nums)-1)
return nums
上述代码选择arr[l]作为pivot,如果要随机选择pivot,则可以将
temp = arr[l]
换为
k = random.choice(range(l, r+1))
arr[l], arr[k] = arr[k], arr[l]
temp = arr[l]
注意其中“>”,“<”以及“>=”,“<=”的使用。