To so tri preprosti O(n²) primerjalni algoritmi za sortiranje. So počasni pri velikih vhodih, vendar lahki za razumevanje in uporabni za poučevanje mehanike sortiranja.
To so tri preprosti O(n²) primerjalni algoritmi za sortiranje. So počasni pri velikih vhodih, vendar lahki za razumevanje in uporabni za poučevanje mehanike sortiranja.
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i] # element to place
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j] # shift bigger elements right
j -= 1
arr[j + 1] = key # drop key into the gap
return arr
insertion_sort([5, 2, 4, 1]) # -> [1, 2, 4, 5]
| Sortiranje | Najboljše | Najslabše | Stabilno | Na mestu |
|---|---|---|---|---|
| Bubble | O(n) | O(n²) | Da | Da |
| Selection | O(n²) | O(n²) | Ne | Da |
| Insertion | O(n) | O(n²) | Da | Da |
Insertion sort je res hiter za majhne ali skoraj sortirane nize in se uporablja v hibridnih sortirih. Izogni se vsem trem pri velikih neusopaenih podatkih — namesto tega uporabi O(n log n) sortiranja.
Ta sortiranja gradijo intuicijo za invariante, zamenjave in stabilnost, preden se lotite naprednejših algoritmov.
Insertion sort se pojavi v produkcijskih sortirih (kot je Timsort) za majhne podceli.
Razumevanje, zakaj so O(n²), naredi preskok na O(n log n) sortiranja smiselnim.