Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


algoritmo insertion sort C, Esercizi di Elementi di Informatica

algoritmo insertion sort scritto in C++ e commentato

Tipologia: Esercizi

2019/2020

Caricato il 22/03/2020

giuseppe-valente-2
giuseppe-valente-2 🇮🇹

3

(2)

20 documenti

1 / 3

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Insertion sort – Esempio funzionamento
Facciamo subito un esempio per capire la logica di funzionamento.
Partiamo dunque da un array con questi elementi:
6 2 4 9 1 8
Innanzitutto confrontiamo 6 con 2
– dato che 6 è maggiore di 2 si sposta il 6 e si procede all’inserimento del 2.
Primo passaggio: 2 6 4 9 1 8
Adesso si confronta 6 con 4
– dato che 6 è maggiore di 4 si dovrebbero scambiare ma prima dobbiamo confrontare il 4
anche con il 2. Dato che 2 non è maggiore di 4 si può scambiare la posizione del 6 con
quella del 4.
Secondo passaggio: 2 4 6 9 1 8
Dopo viene confrontato 6 con 9,
– dato che 6 non è maggiore di 9 non si fa nulla, si incrementa solo l’indice.
Terzo passaggio: 2 4 6 9 1 8
Poi si confronta 9 con 1
– dato che 9 è maggiore di 1 si continua a confrontare 1 con gli altri elementi. Quindi, in
questo caso essendo tutti maggiori, si sposteranno verso destra lasciando libera la prima
posizione dove poter inserire l’elemento.
Quarto passaggio: 1 2 4 6 9 8
Infine si confronta il 9 con il 8,
– dato che è superiore si procede a confrontare il numero 8 con il 4, ma essendo superiore
scambiamo il 9 con il numero 8.
Quinto passaggio: 1 2 4 6 8 9
Sviluppo insertion sort in C++
Per realizzare l’algoritmo chiediamo innanzitutto di inizializzare un array a[] con i valori
inseriti da tastiera.
Dopo, per l’ordinamento, si utilizza un ciclo esterno con indice i che parte da 1 e una
variabile temporanea temp nella quale memorizziamo il secondo valore (a[1]).
L’indice j parte da 0.
Quindi inizialmente i punta al secondo elemento mentre j punta al primo. Dopo utilizziamo
il while che si ripete finché è vera questa condizione: il valore puntato dall’indice j è
maggiore di temp e j>=0.
pf3

Anteprima parziale del testo

Scarica algoritmo insertion sort C e più Esercizi in PDF di Elementi di Informatica solo su Docsity!

Insertion sort – Esempio funzionamento

Facciamo subito un esempio per capire la logica di funzionamento. Partiamo dunque da un array con questi elementi: 6 2 4 9 1 8 Innanzitutto confrontiamo 6 con 2

  • dato che 6 è maggiore di 2 si sposta il 6 e si procede all’inserimento del 2. Primo passaggio: 2 6 4 9 1 8 Adesso si confronta 6 con 4
  • dato che 6 è maggiore di 4 si dovrebbero scambiare ma prima dobbiamo confrontare il 4 anche con il 2. Dato che 2 non è maggiore di 4 si può scambiare la posizione del 6 con quella del 4. Secondo passaggio: 2 4 6 9 1 8 Dopo viene confrontato 6 con 9,
    • dato che 6 non è maggiore di 9 non si fa nulla, si incrementa solo l’indice. Terzo passaggio: 2 4 6 9 1 8 Poi si confronta 9 con 1
  • dato che 9 è maggiore di 1 si continua a confrontare 1 con gli altri elementi. Quindi, in questo caso essendo tutti maggiori, si sposteranno verso destra lasciando libera la prima posizione dove poter inserire l’elemento. Quarto passaggio: 1 2 4 6 9 8 Infine si confronta il 9 con il 8,
  • dato che è superiore si procede a confrontare il numero 8 con il 4, ma essendo superiore scambiamo il 9 con il numero 8. Quinto passaggio: 1 2 4 6 8 9

Sviluppo insertion sort in C++

Per realizzare l’algoritmo chiediamo innanzitutto di inizializzare un array a[] con i valori inseriti da tastiera. Dopo, per l’ordinamento, si utilizza un ciclo esterno con indice i che parte da 1 e una variabile temporanea temp nella quale memorizziamo il secondo valore (a[1]). L’indice j parte da 0. Quindi inizialmente i punta al secondo elemento mentre j punta al primo. Dopo utilizziamo il while che si ripete finché è vera questa condizione: il valore puntato dall’indice j è maggiore di temp e j>=0.

All’interno del while memorizziamo il valore puntato dall’indice j nella posizione successiva a j e decrementiamo j di 1. Quando si finisce il ciclo più interno (while) allora nella posizione j+1 memorizziamo il valore di temp. Continuiamo finché si verifica questa condizione: i<n. Ecco il listato completo dell’insertion sort in C++. #include using namespace std; #define MAX 10 int main() { int n, a[MAX], i, j, temp; cout<<"Quanti elementi?: "; cin>>n; for(i=0;i<n;i++) { cout<<"Elemento numero "<<i+1<<": "; cin>>a[i]; } cout<<"Ordiniamo l'array \n"; for(i=1;i<n;i++) {