Bunlar üç basit O(n²) karşılaştırma sıralaması algoritmasıdır. Büyük girdiler için yavaştırlar ancak anlaşılması kolaydır ve sıralama mekaniklerini öğretmek için kullanışlıdır.
Bunlar üç basit O(n²) karşılaştırma sıralaması algoritmasıdır. Büyük girdiler için yavaştırlar ancak anlaşılması kolaydır ve sıralama mekaniklerini öğretmek için kullanışlıdır.
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]
| Sıralama | En İyi | En Kötü | Kararlı | Yerinde |
|---|---|---|---|---|
| Bubble | O(n) | O(n²) | Evet | Evet |
| Selection | O(n²) | O(n²) | Hayır | Evet |
| Insertion | O(n) | O(n²) | Evet | Evet |
Insertion sort küçük veya neredeyse sıralanmış diziler için gerçekten hızlıdır ve hibrit sıralama içinde kullanılır. Büyük sırasız veriler üzerinde üçünü de kaçının — bunun yerine O(n log n) sıralamalarını kullanın.
Bu sıralamalar, gelişmiş algoritmalarla uğraşmadan önce değişmezler, değişimler ve kararlılık hakkında sezgi oluştururlar.
Insertion sort özellikle üretim sıralamalarının (Timsort gibi) içinde küçük alt diziler için görünür.
Niçin O(n²) olduklarını bilmek, O(n log n) sıralamalarına geçişi anlamlı hale getirir.