QuickSort

QuickSort, to algorytm sortowania używający podejścia "dziel i zwyciężaj". Jest to jeden z najbardziej popularnych algorytmów sortowania i często używany w praktyce ze względu na swoją wydajność. Algorytm został opracowany przez Tony'ego Hoare'a w 1960 roku.

Podstawowa idea QuickSorta to wybieranie elementu z tablicy, zwanej "pivotem", a następnie dzielenie tablicy na dwie części - elementy mniejsze od pivota i elementy większe od pivota. Proces ten jest powtarzany rekurencyjnie dla obu podtablic, aż cała tablica zostanie posortowana.

Kod algorytmu QuickSort może wyglądać tak:

def quicksort(tablica):
    if len(tablica) <= 1:
        return tablica
    else:
        pivot = tablica.pop()
        mniejsze = []
        wieksze = []

        for element in tablica:
            if element <= pivot:
                mniejsze.append(element)
            else:
                wieksze.append(element)

        return quicksort(mniejsze) + [pivot] + quicksort(wieksze)

# Przykład użycia
nieposortowana_tablica = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
posortowana_tablica = quicksort(nieposortowana_tablica)

print("Nieposortowana tablica:", nieposortowana_tablica)
print("Posortowana tablica:", posortowana_tablica)

Kod algorytmu QuickSort bez listy pomocniczej może wyglądać tak:

def quicksort(tablica, lewy, prawy):
    if lewy < prawy:
        pivot_index = partition(tablica, lewy, prawy)
        quicksort(tablica, lewy, pivot_index - 1)
        quicksort(tablica, pivot_index + 1, prawy)

def partition(tablica, lewy, prawy):
    pivot = tablica[prawy]
    i = lewy - 1

    for j in range(lewy, prawy):
        if tablica[j] <= pivot:
            i = i + 1
            tablica[i], tablica[j] = tablica[j], tablica[i]

    tablica[i + 1], tablica[prawy] = tablica[prawy], tablica[i + 1]
    return i + 1

# Przykład użycia
nieposortowana_tablica = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
quicksort(nieposortowana_tablica, 0, len(nieposortowana_tablica) - 1)

print("Posortowana tablica:", nieposortowana_tablica)

Napisany przez tgajdzica dnia 13.01.2024 • Ostatnia zmiana: 13.01 13:28