La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Gli Algoritmi di ordinamento

Presentazioni simili


Presentazione sul tema: "Gli Algoritmi di ordinamento"— Transcript della presentazione:

1 Gli Algoritmi di ordinamento
A.Pinto

2 Gli Algoritmi di Ordinamento - Generalità
L’ordinamento è il processo che permette di ottenere,a partire da un insieme di dati omogenei, un insieme ordinato, secondo un ordine crescente o decrescente,. Assunzione : consideriamo solo l’ordinamento di vettori contenenti numeri o lettere; I metodi considerati per descrivere l’ordinamento di un vettore sono : Ordinamento per selezione Ordinamento per scambio Algoritmi di ordinamento A.Pinto

3 Ordinamento per selezione/Selection-sort
Obiettivo:ottenere un insieme di elementi,ordinato in maniera decrescente L’ordinamento per Selezione seleziona l’elemento con valore maggiore e lo scambia con il primo elemento del vettore. Tra gli N-1 elementi rimanenti viene poi ricercato nuovamente quello maggiore e scambiato con il secondo e così via fino all’ultimo elemento. Algoritmi di ordinamento A.Pinto

4 Selection Sort – L’Algoritmo
I passi da seguire sono i seguenti : Posizionamento sul primo elemento dell’array Ricerca dell’elemento più grande e scambio con il primo elemento dell’array Posizionamento sul secondo elemento dell’array Ricerca dell’elemento più grande tra gli N-1 elementi rimasti e scambio con il secondo elemento dell’array Posizionamento sul terzo elemento dell’array Ricerca dell’elemento più grande tra gli N-2 elementi rimasti e scambio con il terzo elemento dell’array Tale procedimento viene ripetuto N-1 volte Osservazione : Per implementare l’Algoritmo abbiamo bisogno di 2 indici : Uno che tiene conto della posizione in cui si trova l’elemento da ordinare ( primo, secondo, terzo, … ) Uno che permette di scorrere l’array alla ricerca del valore maggiore Algoritmi di ordinamento A.Pinto

5 Ordinamento per selezione
Esempio vettore A Passo 1 Passo 2 Passo 3 b d a c d b a c d c a b d c b a Algoritmi di ordinamento A.Pinto

6 Selection-sort il codice 1/3
/* Algoritmo di Selection Sort */ #include <stdio.h> // definisco la dimensione massima del vettore #define MAXDIM 20 main() { // La dichiarazione delle variabili int i,j,N,temp; int V[MAXDIM]; // Inserimento della dimensione del vettore con controllo che sia minore o uguale //alla dimensione massima do{ printf("\n Inserire la dimensione del vettore non superiore a %d\n",MAXDIM); // inserimento del valore da tastiera scanf("%d",&N); }while(N>MAXDIM); Algoritmi di ordinamento A.Pinto

7 Selection-sort il codice 2/3
for (i=0;i<N;i++) // inserimento del vettore { printf("Inserire l'elemento %d : ",i+1); scanf("%d",&V[i]); } for (i=0;i<N-1;i++) //Blocco di Istruzioni - S1 j = i+1; do{ if ( V[ i ] <[ j ] ) { // effettuare scambio degli elementi temp = V[ i ]; V[ i ] = V[ j ]; V[ j ] = temp; j = j + 1; }while( j < N ); Algoritmi di ordinamento A.Pinto

8 Selection-sort il codice 3/3
// visualizzazione del vettore ordinato mediante l'algoritmo printf("Il vettore ordinato e\' il seguente : \n"); for (i=0;i<N;i++) printf("%d ",V[i]); printf("\n"); } // chiude il main Algoritmi di ordinamento A.Pinto

9 Ordinamento per scambio
Si scandisce tutto l’insieme, se due elementi vengono trovati fuori posto si scambiano tra loro. Questo procedimento viene ripetuto fino a quando non si hanno più cambiamenti. Bubble Sort – vengono effettuati confronti ripetuti e, se necessario, scambi di elementi adiacenti. Un vettore di N elementi viene letto per intero N – 1 volte sempre partendo dall’ultimo elemento. Algoritmi di ordinamento A.Pinto

10 Ordinamento per scambio/Bubble-Sort
Osservazione : Per implementare l’Algoritmo abbiamo bisogno di 2 indici : Uno che tiene conto della posizione in cui si trova l’elemento già ordinato( fino al primo, fino al secondo, fino al terzo, … ) Uno che permette di scorrere l’array alla ricerca del valore minimo vettore iniziale a b c d Passo d a b c Passo d c a b Passo d c b a Algoritmi di ordinamento A.Pinto

11 Algoritmi di ordinamento
Bubble-sort codice 1/3 #include <stdio.h> // definisco la dimensione massima del vettore #define MAXDIM 20 main() { // La dichiarazione delle variabili int i,j,N,temp; int V[MAXDIM]; // Inserimento della dimensione del vettore con //controllo che sia minore o uguale alla dimensione //massima do{ printf("\n Inserire la dimensione del vettore non superiore a %d\n",MAXDIM); // inserimento del valore da tastiera scanf("%d",&N); }while(N>MAXDIM); Algoritmi di ordinamento A.Pinto

12 Algoritmi di ordinamento
Bubble-sort codice 2/3 for (i=0;i<N;i++) // inserimento del vettore { printf("Inserire l'elemento %d : ",i+1); scanf("%d",&V[i]); } for (i=0;i<N-1;i++) j = N -1; //Posizionamento ad ogni step i sull’ultimo elemento do{ if ( V[ j-1 ] <V[ j ] ) { // effettuare scambio degli elementi adiacenti temp = V[ j-1 ]; V[ j-1 ] = V[ j ]; V[ j ] = temp; j = j - 1; }while( j > i ); Algoritmi di ordinamento A.Pinto

13 Algoritmi di ordinamento
Bubble-sort codice 3/3 // visualizzazione del vettore ordinato mediante l'algoritmo printf("Il vettore ordinato e\' il seguente : \n"); for (i=0;i<N;i++) printf("%d ",V[i]); printf("\n"); } // chiude il main Algoritmi di ordinamento A.Pinto


Scaricare ppt "Gli Algoritmi di ordinamento"

Presentazioni simili


Annunci Google