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)