Al momento stai visualizzando Come funziona l’algoritmo insertion sort
By Simpsons contributor - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=17512147

Come funziona l’algoritmo insertion sort

  • Autore dell'articolo:
  • Categoria dell'articolo:Guide

L’ordinamento per inserzione è un semplice algoritmo di ordinamento che funziona sulla falsariga dell’ordinamento delle carte da gioco. Non è sicuramente l’algoritmo più efficente in questo ambito, ma è sicuramente tra i più studiati nell’ambito informatico.

L’Insertion Sort è un algoritmo di ordinamento che funziona suddividendo l’array in due parti: una parte ordinata e una parte non ordinata. Inizia considerando l’elemento successivo nella parte non ordinata e lo inserisce nella parte ordinata, spostando gli elementi più grandi verso destra per fare spazio al nuovo elemento. Ecco come funziona passo dopo passo:

Supponiamo di avere l’array [5, 2, 4, 6, 1, 3] e vogliamo ordinarlo con l’Insertion Sort. Procediamo a verificare passo per passo il funzionamento dell’Insertion Sort sull’array in questione:

Pubblicità - Continua a leggere sotto :-)
Sei un webmaster? Prova TheMoneytizer per il tuo sito
  1. Iterazione 1:
    • Elemento corrente: 2
    • Confronto con gli elementi ordinati a sinistra (5). 5 è maggiore di 2, quindi 5 viene spostato a destra per fare spazio a 2.
    • Array parzialmente ordinato: [2, 5, 4, 6, 1, 3]
  2. Iterazione 2:
    • Elemento corrente: 4
    • Confronto con gli elementi ordinati a sinistra (5, 2). 5 è maggiore di 4, quindi 5 viene spostato a destra per fare spazio a 4.
    • Array parzialmente ordinato: [2, 4, 5, 6, 1, 3]
  3. Iterazione 3:
    • Elemento corrente: 6
    • Non ci sono elementi più piccoli a sinistra di 6, quindi rimane nella sua posizione attuale.
    • Array parzialmente ordinato: [2, 4, 5, 6, 1, 3]
  4. Iterazione 4:
    • Elemento corrente: 1
    • Confronto con gli elementi ordinati a sinistra (6, 5, 4, 2). Tutti questi sono maggiori di 1, quindi vengono spostati a destra per fare spazio a 1.
    • Array parzialmente ordinato: [1, 2, 4, 5, 6, 3]
  5. Iterazione 5:
    • Elemento corrente: 3
    • Confronto con gli elementi ordinati a sinistra (6, 5). Sono maggiori di 3, quindi vengono spostati a destra per fare spazio a 3.
    • Array ordinato: [1, 2, 3, 4, 5, 6]

Dopo queste iterazioni, l’array risulta completamente ordinato. La sequenza di operazioni eseguite corrisponde alla logica dell’Insertion Sort, dove gli elementi vengono inseriti uno per uno nella parte ordinata dell’array.

By Simpsons contributor - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=17512147
By Simpsons contributor – Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=17512147

Programma Python per l’ordinamento per inserzione

La funzione insertionSort prende in input un array arr. Per prima cosa calcola la lunghezza dell’array (n). Se la lunghezza è 0 o 1, la funzione ritorna immediatamente perché un array con 0 o 1 elemento è considerato già ordinato.

Per gli array con più di un elemento, la funzione procede all’iterazione dell’array a partire dal secondo elemento. Prende l’elemento corrente (denominato “chiave”) e lo confronta con gli elementi della porzione ordinata dell’array che lo precedono. Se la chiave è più piccola di un elemento della porzione ordinata, la funzione sposta l’elemento a destra, creando spazio per la chiave. Questo processo continua finché non viene trovata la posizione corretta per la chiave, che viene quindi inserita in quella posizione.

L’esempio fornito mostra il processo di ordinamento con l’algoritmo insertion sort. L’array iniziale [12, 11, 13, 5, 6] viene sottoposto alla funzione insertionSort. Dopo l’ordinamento, l’array dovrebbe essere [5, 6, 11, 12, 13]. Il codice stampa l’array ordinato come output finale.

Pubblicità - Continua a leggere sotto :-)
Sei un webmaster? Prova TheMoneytizer per il tuo sito
def insertionSort(arr):
  n = len(arr) # Get the length of the array

  if n <= 1: 
    arr[j+1] = arr[j] 
    j -= 1
    arr[j+1] = key 

# test
arr = [12, 11, 13, 5, 6]
insertionSort(arr)
print(arr)

Versione ottimizzata dell’Insertion Sort

Esiste una interessante alternativa la cui paternità viene attribuita all’informatico Jon Louis Bentley: un insertion sort con sole tre righe di codice, molto intuitivo ed altrettanto facile da ricordare. È stato presentato e discusso all’interno del libro dell’autore Programming Pearls. Lo proponiamo in pseudo codice in quanto può essere facilmente tradotto e codificato nei vari linguaggi di programmazione.

for i = [1, n)
  for j = i; j>0 && x[j-1] > x[j]; j--
    scambia(j-1,  j)

L’algoritmo in questione prevede una funzione di scambio che funziona, come al solito in questi casi, con una variabile di appoggio tmp;

Pubblicità - Continua a leggere sotto :-)
Cerchi alternative a Google Adsense per il tuo sito? Prova TheMoneytizer!
Usa il codice 189ed7ca010140fc2065b06e3802bcd5 per ricevere 5 € dopo l'iscrizione


(Tophost) l' hosting web più economico - Usa il coupon sconto: 7NSS5HAGD5UC2

scambia(a,b){
  tmp = a; 
  a = b; 
  b = tmp;
}

👇 Contenuti da non perdere 👇



Trovalost esiste da 4693 giorni (13 anni), e contiene ad oggi 4356 articoli (circa 3.484.800 parole in tutto) e 23 servizi online gratuiti. – Leggi un altro articolo a caso

Numero di visualizzazioni (dal 21 agosto 2024): 4
Pubblicità - Continua a leggere sotto :-)
Segui il canale ufficiale Telegram @trovalost https://t.me/trovalost
Seguici su Telegram: @trovalost

Trovalost.it

Ho creato Trovalost.it e ho scritto quasi tutti i suoi contenuti relativi all'informatica. Credits immagini: pexels.com, pixabay.com, wikipedia.org, Midjourney, StarryAI, se non diversamente specificato.