Skip to main content

Exploring quicksort (part e6f9)

Updated 2 min readMarkdown

Разберём задачу, которая встречается практически в каждом учебнике по программированию.

Задача

Реализовать быструю сортировку — один из самых известных алгоритмов «разделяй и властвуй».

Решение

def quicksort(arr: list[int]) -> list[int]:
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quicksort(left) + middle + quicksort(right)


print(quicksort([3, 6, 8, 10, 1, 2, 1]))

Как это работает

Выбирается опорный элемент, массив делится на три части (меньше, равно, больше), затем части сортируются рекурсивно и склеиваются.

Пример работы

[1, 1, 2, 3, 6, 8, 10]

Сложность

O(n log n) в среднем, O(n²) в худшем случае.

Такой пример хорошо закрепляется практикой — перепишите решение руками и прогоните на своих тестах.

Читайте также:

Решение · сортировку · [arrlen(arr · задачу · каждом · части · [listint · худшем · middle · практикой · работы · пример · своих · больше · тестах · Реализовать · Разберём · Выбирается · решение · опорный · Сложность · return · склеиваются · Пример · хорошо · которая · элемент · учебнике

No comments yet. Be the first to comment.

More from this blog