Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.