python。我用的快速排序算法,两个超时(3和4)怎么办
查看原帖
python。我用的快速排序算法,两个超时(3和4)怎么办
727009
Foright楼主2022/7/5 17:54
n = int(input())
alist = list(map(int, input().split()))
def quick_sort(alist, start_id, end_id):
    if start_id >= end_id:
        return
    left_id = start_id + 1
    right_id = end_id
    pivot_id = start_id
    while left_id <= right_id:
        if alist[left_id] > alist[pivot_id] and alist[right_id] < alist[pivot_id]:
            alist[left_id], alist[right_id] = alist[right_id], alist[left_id]
        if alist[left_id] <= alist[pivot_id]:
            left_id += 1
        if alist[right_id] >= alist[pivot_id]:
            right_id -= 1
    alist[pivot_id], alist[right_id] = alist[right_id], alist[pivot_id]
    leftlength = right_id - start_id
    rightlength = end_id - right_id
    if leftlength < rightlength:    # 如果左少右多, 递归
        quick_sort(alist,start_id, right_id - 1)
        quick_sort(alist, right_id + 1, end_id)
    else:
        quick_sort(alist, right_id + 1, end_id)
        quick_sort(alist, start_id, right_id - 1)
    # quick_sort(alist, start_id, right_id-1)
    # quick_sort(alist, right_id+1, end_id)
quick_sort(alist, 0, len(alist)-1)
for i in range(len(alist)):
    print(alist[i], end=' ')
2022/7/5 17:54
加载中...