L'algoritmo insertion sort

L'insertion sort è un algoritmo di ordinamento di un array (vettore) tra i più semplici da realizzare.

Lo pseudocodice

  1. for j=2 to n
  2. elemento = Array( j )
  3. i=j-1
  4. while i > 0 and Array( i ) > elemento
  5. Array( i+1 ) = Array ( i )
  6. i = i-1
  7. Array ( i+1 ) = elemento

L'algoritmo riceve in input un array non ordinato.

Elabora e restituisce in output l'array ordinato in modo crescente.

Come funziona l'algoritmo

La struttura ciclica for inizia le iterazioni dal secondo elemento in poi.

Per ciascun j-esimo elemento l'algoritmo lo confronta con gli elementi precedenti tramite una struttura ciclica condizionata while più interna.

  • Se trova un elemento più grande lo sposta in avanti.
  • Se trova un elemento minore o uguale termina il ciclo più interno (while).

L'algoritmo cessa l'esecuzione quando termina il ciclo più esterno (for)

Un esempio pratico

Considero un vettore con n=5 elementi

6 5 3 4 1

Per semplicità l'indice dell'array comincia con la posizione 1.

Nota. In molti linguaggi di programmazione il primo elemento di un array comincia dalla posizione 0. E' importante ricordarlo.

Iterazione 1 (j=2)

L'algoritmo confronta l'elemento in seconda posizione (5) con gli elementi precedenti.

6 5 3 4 1

Cinque è minore di sei. Quindi, 5 prende il posto di 6 e viceversa.

5 6 3 4 1

Iterazione 2 (j=3)

L'algoritmo confronta l'elemento in terza posizione (3) con gli elementi precedenti.

5 6 3 4 1

Tre è minore di 6. Quindi, 3 prende il posto di 6 e viceversa.

5 3 6 4 1

Tre è minore di 5. Quindi, 3 prende il posto di 5 e viceversa.

3 5 6 4 1

Iterazione 3 (j=4)

L'algoritmo confronta l'elemento in quarta posizione (4) con gli elementi precedenti.

3 5 6 4 1

Quattro è minore di 6. Quindi, 4 prende il posto di 6 e viceversa.

3 5 4 6 1

Quattro è minore di 5. Quindi, 4 prende il posto di 5 e viceversa.

3 4 5 6 1

Iterazione 4 (j=5)

L'algoritmo confronta l'elemento in quinta posizione (1) con gli elementi precedenti.

3 4 5 6 1

Uno è minore di 6. Quindi, 1 prende il posto di 6 e viceversa.

3 4 5 1 6

Uno è minore di 5. Quindi, 1 prende il posto di 5 e viceversa.

3 4 1 5 6

Uno è minore di 4. Quindi, 1 prende il posto di 4 e viceversa.

3 1 4 5 6

Uno è minore di 3. Quindi, 1 prende il posto di 3 e viceversa.

1 3 4 5 6

Ora l'array è ordinato.

E così via

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Algoritmi e strutture di dati

Algoritmi di ordinamento