代码如下:
def sub_sort(arr, low, high):
key = arr[low]
while low < high:
while low < high and arr[high] >= key:
high -= 1
arr[low], arr[high] = arr[high], arr[low] #此时交换,但不移动low和high,因为下面的循环会处理它们
while low < high and arr[low] <= key:
low += 1
arr[low], arr[high] = arr[high], arr[low] #同上
arr[low] = key #这一步其实是多余的,因为最后一次交换已经完成了这个操作
return low
def qsort(arr, low, high):
if low < high:
key_index = sub_sort(arr, low, high)
qsort(arr, low, key_index - 1)
qsort(arr, key_index + 1, high)
def read():
n = int(input())
input_str = input().split()
arr = list(map(int, input_str))
return arr
if __name__ == "__main__":
arr = read()
qsort(arr, 0, len(arr) - 1)
print(' '.join(map(str, arr)))