L’Insertion Sort è un algoritmo di ordinamento che funziona come quando ordiniamo carte da gioco in mano:
- Iniziamo con la parte sinistra dell’array come ordinata (inizialmente 1 elemento)
- Prendiamo un elemento dalla parte non ordinata
- Lo inseriamo nella posizione corretta nella parte ordinata
- Ripetiamo finché tutti gli elementi sono ordinati
Implementazione
def insertion_sort(A):
for i in range(1, len(A)):
key = A[i] # key è l'elemento da inserire nella parte ordinata
j = i - 1 # ultimo indice della parte ordinata
# sposta a destra gli elementi di A[:i] che sono maggiori di key
while j >= 0 and A[j] > key:
A[j+1] = A[j]
j -= 1
A[j+1] = key
return A
Complessità
- Caso peggiore:
- Caso migliore: (array già ordinato)
- Spazio:
È efficiente per array piccoli o quasi ordinati.