Решение задачи Быстрая сортировка с Яндекс Контест

Без пояснения   Просмотров: 1748


Отсортируйте данный массив. Используйте быструю сортировку.


Код

def sort(l, r):
    if r - l < 2:
        return
    m = (r + l) // 2
    x = a[m]
    a[l], a[m] = a[m], a[l]
    f_e = l_e = l
    for i in range(l + 1, r):
        if a[i] < x:
            if i - l_e == 1:
                a[f_e], a[i] = a[i], a[f_e]
            else:
                a[f_e], a[l_e + 1], a[i] = a[i], a[f_e], a[l_e + 1]
            l_e += 1
            f_e += 1

        elif a[i] == x:
            if i - l_e > 1:
                a[i], a[l_e + 1] = a[l_e + 1], a[i]
            l_e += 1
    sort(l, f_e)
    sort(l_e + 1, r)


n = int(input())
a = list(map(int, input().split()))
sort(0, len(a))
print(*a)

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться



Заявка на расчет