Sortowanie przez wstawianie

Sortowanie przez wstawianie (ang. insertion sort) to prosty algorytm sortowania, który działa w taki sam sposób, w jaki sortujemy karty do gry, które trzymamy w rękach. Jest on wydajny dla zbiorów o niewielkiej liczebności.

Złożoność czasowa sortowania przez wstawianie:

  • Najlepszy przypadek: O(n), jeśli lista jest już posortowana, gdzie n jest liczbą elementów na liście
  • Przypadek przeciętny: O(n2), jeśli lista jest uporządkowana losowo
  • Najgorszy przypadek: O(n2), jeśli lista jest w odwrotnej kolejności

Sortowanie przez wstawianie ma złożoność pamięciowa O(1), co czyni go algorytmem sortowania efektywnym pod względem wykorzystania pamięci.

Implementacja sortowania przez wstawianie w Pythonie:

# definicja funkcji sortowania przez wstawianie rosnąco
def insertionSort(arr):
    n = len(arr)
      
    if n <= 1:
        return  # jeśli tablica ma jeden element lub jest pusta, to znaczy że jest już posortowana i należy zakończyć funkcję
 
    for i in range(1, n): # iteruj po tablicy zaczynając od drugiego elementu
        key = arr[i]
        j = i-1
        while j >= 0 and key < arr[j]:
            arr[j+1] = arr[j]  # przesuń elementy mniejsze w prawo
            j -= 1
        arr[j+1] = key  # umieść sprawdzany element w prawidłowym miejscu

# przykładowe dane wejściowe do posortowania
arr = [12, 11, 13, 5, 6]

# wywołanie funkcji sortowania
insertionSort(arr)

# wyświetlenie posortowanej tablicy
print(arr)

Dodaj komentarz