Ovo su tri jednostavna O(n²) sort-a sa poređenjem. Sporosti su na velikim unosima ali laki za razumijevanje i korisni za nastavu mehanike sortiranja.
Ovo su tri jednostavna O(n²) sort-a sa poređenjem. Sporosti su na velikim unosima ali laki za razumijevanje i korisni za nastavu 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]
| Sort | Najbolji | Najgori | Stabilan | Na mjestu |
|---|---|---|---|---|
| Bubble | O(n) | O(n²) | Da | Da |
| Selection | O(n²) | O(n²) | Ne | Da |
| Insertion | O(n) | O(n²) | Da | Da |
Insertion sort je zaista brz za male ili gotovo sortirane nizove i koristi se unutar hibridnih sortiranja. Izbjegavajte sva tri na velikim nesortiranima — umjesto toga koristite O(n log n) sortiranja.
Ovi sortiranja grade intuiciju za invarijante, zamjene i stabilnost prije nego što se pozabavite naprednim algoritmima.
Insertion sort se naročito pojavljuje unutar proizvodnih sortiranja (poput Timsort) za male podnizove.
Znanje zašto su O(n²) čini skok na O(n log n) sortiranja značajnim.