快排,python,求助
查看原帖
快排,python,求助
1280061
TPJX楼主2024/3/9 19:13

代码如下:

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)))

2024/3/9 19:13
加载中...