Sortowanie przez wstawianie
Sortowanie przez wstawianie (ang. Insertion Sort) to prosty algorytm sortowania, który działa na zasadzie porównywania i wstawiania elementów do odpowiednich miejsc, podobnie jak w przypadku układania kart. Jest szczególnie efektywny dla małych zbiorów danych, chociaż jego złożoność wynosi . Mimo niższej wydajności w porównaniu do algorytmów takich jak quicksort czy heapsort, sortowanie przez wstawianie ma kilka istotnych zalet:
- Liczba porównań jest zależna od inwersji w danych, co czyni go wydajnym dla zbiorów wstępnie posortowanych.
- Efektywność w przypadku małych zbiorów danych.
- Stabilność algorytmu.
Można zastosować modyfikację algorytmu, wykorzystując wyszukiwanie binarne, co zmniejsza liczbę porównań do , jednak liczba przesunięć elementów pozostaje na poziomie .
Schemat działania algorytmu
Algorytm działa według następującego schematu:
- Utwórz zbiór elementów posortowanych i przenieś do niego dowolny element z zbioru nieposortowanego.
- Weź dowolny element ze zbioru nieposortowanego.
- Porównuj wyciągnięty element z kolejnymi elementami zbioru posortowanego, aż znajdziesz element równy lub większy (dla ciągu niemalejącego) lub dotrzesz do początku/końca zbioru.
- Wstaw wyciągnięty element w odpowiednie miejsce.
- Powtarzaj proces, aż zbiór nieuporządkowany stanie się pusty.
Pseudokod algorytmu
Poniższy pseudokod ilustruje algorytm:
Insert_sort(A, n):
for i=2 to n:
# Wstaw A[i] w posortowany ciąg A[1 … i-1]
wstawiany_element = A[i]
j = i – 1
while j > 0 and A[j] > wstawiany_element:
A[j + 1] = A[j]
j = j – 1
A[j + 1] = wstawiany_element
Przykłady implementacji
Przykładowe implementacje sortowania przez wstawianie można znaleźć na Wikibooks.