|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
[C++] Algoritmi di ordinamento...dubbi
Ho provato a fare un algoritmo di ordinamento di un array di interi...in ordine crescente..
non funzionava bene...e ho cercato un pò sul web... ...ho trovato questo: Codice:
void ordina(vettore v,int d)
{
int i,j,mem,n;
n=d;
for(i=0;i<d;i++)
{
for(j=0;j<n-1;j++)
{
if(v[j]>v[j+1])
{
mem=v[j];
v[j]=v[j+1];
v[j+1]=mem;
}
}
n=n-1;
}
}
Non ho capito il perchè...qualcuno sa spiegarmelo?! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Supponi che il tuo array di partenza sia questo:
Codice:
[5, 4, 3, 2, 1, 0] Il for fa il suo primo giro. Gli elementi 0 e 1 sono confrontati tra di loro. Il 5 è maggiore di 4 quindi i due elementi sono scambiati di posto. A questo punto hai l'array ordinato in questo modo: Codice:
[4, 5, 3, 2, 1, 0] Una volta terminati gli n-1 giri il 5 si trova nella giusta posizione a destra. Codice:
[4, 3, 2, 1, 0, 5] Se provi a lanciare un'altra volta il for sarà il 4 ad essere spostato verso destra fino a che non arriverà nella giusta posizione. Essendoci n elementi per essere sicuro che tutti siano nella giusta posizione devi ripetere il tuo for n-1 volte. |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
Quote:
Inviato dal mio GT-I9003 usando Tapatalk |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
a scopo didattico!!! e per lo stesso motivo per cui ancora i bimbi imparano le addizioni a mano anche se esiste la calcolatrice!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:21.




















