def partition(arr, left, right):
p = arr[left]
while left < right:
while left < right and arr[right] > p:
right -= 1
arr[left], arr[right] = arr[right], arr[left]
while left<right and arr[left]<=p:
left += 1
arr[left], arr[right] = arr[right], arr[left]
return left
def p_sort(arr, left, right):
if left < right:
pi = partition(arr, left, right)
p_sort(arr, left, pi-1)
p_sort(arr, pi+1, right)
return arr
L = [5, 5, 1, 6, 9, 1, 11, 6, 7, 5, 2, 4, 7]
print(p_sort(L, 0, len(L)-1))
输出:
[1, 1, 2, 4, 5, 5, 5, 6, 6, 7, 7, 9, 11]