Quicksort Python排序麻烦

def quicksort(mas):
    if mas:
        mid = mas[0]
        menshe = [i for i in mas[1:] if i < mid]
        bolshe = [i for i in mas[1:] if i >= mid]
        return quicksort(menshe) + [mid] + quicksort(bolshe)
    else: 
        return mas

n = int(input())
mas = input().split()
print(*quicksort(mas))

例如,它在某些测试中失败

input:
3
8 21 22
output:
21 22 8

如何改进代码?

解决方法:

您的代码可能会很好地工作.我还没有测试. (但现在看来,这是正确的)

您的错误是您放弃了第一个输入.因此,您应该使用自己的代码,如下所示:

mas = input().split()
print(*quicksort(mas))

您只需要一个输入.

另外,您正在对字符串(不一定是数字)进行排序,因此您可能需要这样做:

mas = input().split()
print(*quicksort([int(item) for item in mas]))
上一篇:快速排序(golang)


下一篇:<排序算法> 快速排序QuickSort