def partition(A, p, r):
'''
对输入的数据进行边界判断
Params:
list[int] A, 需要排序的数组
int p, 左边界
int r, 右边界
Returns:
list[int] A, 已经划分好的数组
int i+1, 边界, 左边的数据(不含A[i+1])小于A[i+1], 右边的数据(不含A[i+1])大于他
'''
if p>r:
return A, p
i = p-1
j = p
x = A[r]
for j in range(p, r):
if A[j]<=x:
i += 1
A[i], A[j] = A[j], A[i]
#交换
A[r],A[i+1] = A[i+1],A[r]
#print(i+1, A)
return A, i+1
def quick_sort(A, p, r):
A, q = partition(A, p, r)
#要对q进行边界判断
if p<r and q>=0:
A = quick_sort(A, p, q-1)
return A
A = [3,2,1,22,13]
A = quick_sort(A, 0, len(A)-1)
print(A)