Sortowanie szybkie

Sortowanie przez scalanie i sortowanie szybkie - Algorytmy: zakres rozszerzony (Python)

Sortowanie szybkie wybiera **element osiowy** (pivot), np. ostatni, i dzieli listę na elementy mniejsze od niego i niemniejsze. Potem rekurencyjnie sortuje obie części. Średnio działa w czasie n * log2(n), ale dla niekorzystnie ułożonych danych (np. już posortowanych) zwalnia do n^2.

def quick_sort(data):
    if len(data) <= 1:
        return data
    pivot = data[-1]
    smaller = [x for x in data[:-1] if x < pivot]
    other = [x for x in data[:-1] if x >= pivot]
    print("pivot", pivot, ":", smaller, other)
    return quick_sort(smaller) + [pivot] + quick_sort(other)


print(quick_sort([5, 2, 9, 1, 7, 3, 8, 6]))

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Algorytmy: zakres rozszerzony·Zaloguj się, aby zapisać postęp na koncie.