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

07-28 06:35