*
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.
*
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
5
6
*
3
8
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul primo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il primo elemento dell’array
5
Indice1=0
Indice2=0
6
3
*
8
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul primo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il primo elemento dell’array
5
Indice1=0
Indice2=1
A[0]<A[1]
scambio
6
3
*
8
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul primo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il primo elemento dell’array
6
Indice1=0
Indice2=1
A[0]<A[1]
scambio
5
3
*
8
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul primo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il primo elemento dell’array
6
Indice1=0
Indice2=2
A[0]>A[2]
No scambio
5
3
*
8
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul primo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il primo elemento dell’array
6
Indice1=0
Indice2=3
A[0]>A[3]
scambio
5
3
*
8
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul primo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il primo elemento dell’array
8
Indice1=0
Indice2=3
A[0]>A[3]
scambio
5
3
*
6
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul primo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il primo elemento dell’array
8
Indice1=0
Indice2=4
A[0]<A[4]
No scambio
5
3
*
6
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul secondo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il secondo elemento
dell’array
8
Indice1=1
Indice2=1
A[1]=A[1]
No scambio
5
3
*
6
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul secondo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il secondo elemento
dell’array
8
Indice1=1
Indice2=2
A[1]>A[2]
No scambio
5
3
*
6
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul secondo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il secondo elemento
dell’array
8
Indice1=1
Indice2=3
A[1]<A[3]
scambio
5
3
*
6
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul secondo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il secondo elemento
dell’array
8
Indice1=1
Indice2=3
A[1]<A[3]
scambio
6
3
*
5
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul secondo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il secondo elemento
dell’array
8
Indice1=1
Indice2=4
A[1]>A[4]
No scambio
6
3
*
5
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul terzo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il terzo elemento dell’array
8
Indice1=2
Indice2=2
A[2]=A[2]
No scambio
6
3
*
5
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul terzo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il terzo elemento dell’array
8
Indice1=2
Indice2=3
A[2]<A[3]
scambio
6
3
*
5
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul terzo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il terzo elemento dell’array
8
Indice1=2
Indice2=3
A[2]<A[3]
scambio
6
5
*
3
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul terzo elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il terzo elemento dell’array
8
Indice1=2
Indice2=4
A[2]>A[4]
No scambio
6
5
*
3
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul quarto elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il quarto elemento dell’array
8
Indice1=3
Indice2=3
A[3]=A[3]
No scambio
6
5
*
3
2
I passi da seguire sono i seguenti :
1)
Posizionamento sul quarto elemento dell’array
2)
Ricerca dell’elemento più grande e scambio con il quarto elemento dell’array
8
Indice1=3
Indice2=4
A[3]>A[4]
No scambio
6
5
*
3
2
#include <iostream.h>
Using namespace std;
int x,N=5,temp;
int V[N];
main()
{
for (int i=0;i<N;i++) // inserimento del vettore
{
cout<<"Inserire l'elemento: "<<i+1<<" ";
cin>>V[i];
}
for (int i=0;i<N-1;i++) // dal primo al 5° elemento
{
x = i+1;
do
{
if (V[ i ] <[ i+1 ])
{ // effettuare scambio degli elementi
Con FOR e
temp = V[ i ];
WHILE
V[ i ] = V[ x ];
V[ x ] = temp;
}
x++;
}
while( x < N );
}
// visualizzazione del vettore ordinato mediante l'algoritmo
cout<<"Il vettore ordinato e\' il seguente : "<<endl;
for (int i=0;i<N;i++)
cout<<V[i]<<endl;
} // chiude il main
for (int i=0;i<N-1;i++) // dal primo al 5° elemento
{
for (int x=i+1;x<N;x++) // dal secondo al 6° elemento
{
if (V[ i ] <[ x ])
{ // effettuare scambio degli elementi
Con 2
temp = V[ i ];
cicli FOR
V[ i ] = V[ x ];
annidati
V[ x ] = temp;
}
}
}
// visualizzazione del vettore ordinato mediante l'algoritmo
cout<<"Il vettore ordinato e\' il seguente : "<<endl;
for (int i=0;i<N;i++)
cout<<V[i]<<endl;
} // chiude il main
Scarica

Algoritmo di ordinamento per selezione