Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> Domanda >> PC Risoluzione dei problemi >> .

Cos'è l'algoritmo di ordinamento per inserimento [spiegato con un esempio pratico]

# Algoritmo di ordinamento per inserimento

Panoramica

L'ordinamento per inserzione è un semplice algoritmo di ordinamento che funziona inserendo ciascun elemento di un array nella sua posizione corretta nell'array. Inizia con un array ordinato vuoto e quindi scorre l'array di input, inserendo ogni elemento nella posizione corretta nell'array ordinato. Questo processo viene ripetuto finché l'intero array di input non viene ordinato.

Passaggi dell'algoritmo

Ecco l'algoritmo passo passo per l'ordinamento per inserimento:

1. Inizia con un array ordinato vuoto.

2. Scorrere l'array di input.

3. Per ciascun elemento nell'array di input, inserirlo nella posizione corretta nell'array ordinato.

4. Per inserire un elemento, confrontarlo con ciascun elemento nell'array ordinato, iniziando dal primo elemento.

5. Se l'elemento è inferiore all'elemento corrente nell'array ordinato, inserirlo prima dell'elemento corrente.

6. Se l'elemento è maggiore dell'elemento corrente nell'array ordinato, continua il confronto con l'elemento successivo nell'array ordinato.

7. Ripetere i passaggi 4-6 finché l'elemento non è stato inserito nella posizione corretta nell'array ordinato.

8. Ripetere i passaggi da 2 a 7 per ciascun elemento nell'array di input.

Esempio

Consideriamo il seguente array di input:

```

[5, 2, 8, 3, 1]

```

I seguenti passaggi mostrano come l'algoritmo di ordinamento per inserimento ordinerebbe questo array:

1. Inizia con un array ordinato vuoto.

```

[]

```

2. Scorrere l'array di input.

```

[5]

```

3. Per ciascun elemento nell'array di input, inserirlo nella posizione corretta nell'array ordinato.

```

[5]

```

4. Per inserire l'elemento 2, confrontarlo con ciascun elemento dell'array ordinato, iniziando dal primo elemento.

```

[5, 2]

```

5. Poiché 2 è inferiore a 5, inserirlo prima dell'elemento corrente.

```

[2, 5]

```

6. Scorrere l'array di input.

```

[2, 5, 8]

```

7. Per ciascun elemento nell'array di input, inserirlo nella posizione corretta nell'array ordinato.

```

[2, 5, 8]

```

8. Per inserire l'elemento 3, confrontarlo con ciascun elemento dell'array ordinato, iniziando dal primo elemento.

```

[2, 3, 5, 8]

```

9. Poiché 3 è inferiore a 5, inserirlo prima dell'elemento corrente.

```

[2, 3, 5, 8]

```

10. Scorrere l'array di input.

```

[2, 3, 5, 8, 1]

```

11. Per ciascun elemento nell'array di input, inserirlo nella posizione corretta nell'array ordinato.

```

[1, 2, 3, 5, 8]

```

12. Per inserire l'elemento 1, confrontarlo con ciascun elemento dell'array ordinato, iniziando dal primo elemento.

```

[1, 2, 3, 5, 8]

```

13. Poiché 1 è inferiore a 2, inserirlo prima dell'elemento corrente.

```

[1, 2, 3, 5, 8]

```

14. L'array ordinato è ora completo.

```

[1, 2, 3, 5, 8]

```

Complessità temporale

La complessità temporale dell'ordinamento per inserimento è O(n^2), dove n è la lunghezza dell'array di input. Ciò significa che il tempo di esecuzione dell'ordinamento per inserzione aumenta quadraticamente all'aumentare della dimensione dell'array di input. L'ordinamento per inserzione offre prestazioni migliori quando l'array di input è già quasi ordinato, nel qual caso la sua complessità temporale è O(n).

Complessità spaziale

L'ordinamento per inserimento richiede spazio ausiliario O(1), poiché deve memorizzare solo una singola variabile (l'elemento corrente da inserire) oltre all'array di input.

Vantaggi e svantaggi

L'ordinamento per inserzione presenta alcuni vantaggi e svantaggi:

Vantaggi:

* Semplice da implementare

* Efficiente per array di piccole dimensioni o array quasi ordinati

* Algoritmo di ordinamento stabile (mantiene l'ordine relativo degli elementi uguali)

Svantaggi:

* Non efficiente per array di grandi dimensioni

* Complessità temporale quadratica (O(n^2))

* Non è un algoritmo di ordinamento sul posto (richiede spazio aggiuntivo)

Conclusione

L'ordinamento per inserzione è un algoritmo di ordinamento semplice ed efficiente che funziona bene per array di piccole dimensioni o array quasi ordinati. La sua semplicità e stabilità lo rendono un algoritmo utile per scopi didattici e per applicazioni specializzate. Tuttavia, non è l'algoritmo di ordinamento più efficiente per array di grandi dimensioni, dove dovrebbero essere utilizzati algoritmi più efficienti come Quicksort o Merge Sort.

 

Domanda © www.354353.com