Bubble sort
Ragazzi..se chiedo in input dei valore e poi voglio che questi man mano vengano memorizzati in un vettore che verrà ordina come in questa procedura, come faccio??
procedure bubblesort(var V:vettore);
var i,j:integer; scambio:boolean;
procedure scambia(var x,y:integer);
var aux:integer;
begin
aux:=x; x:=y; y:=aux;
end;
begin {Bubblesort}
for j:=1 to n-1 do
repeat
scambio:=false;
for i:=1 to n-1 do
if V[i]>V[i+1] then
begin
scambia(V[i],V[i+1]);
scambio:=true;
end;
until scambio=false
end;
Risposte
basta usare 2 cicli for , in pratica dopo che hai caricato il vettore con i numeri ,
fai un ciclo for che fa la scansione di tutto il vettore partendo dalla pima
posizione. Dentro il ciclo for , metti un'altro ciclo for (che scanna anche lui
tutto il vettore fino alla posizione n-1) questo ciclo confronta la posizione i (prima posizione) con la posizione
i+1 (posizione successiva). Qui se i > i+1 usi una variabile d'appoggio e inverti le posizioni i
diventa i+1 e viceversa. Cosi' ad ogni iterazione i numeri piu' piccoli posizionati
in fondo al vettore si spostano in avanti veroso le prime posizioni.
Non so se sono stato chiaro.. ho un esempio in C
Ciao
fai un ciclo for che fa la scansione di tutto il vettore partendo dalla pima
posizione. Dentro il ciclo for , metti un'altro ciclo for (che scanna anche lui
tutto il vettore fino alla posizione n-1) questo ciclo confronta la posizione i (prima posizione) con la posizione
i+1 (posizione successiva). Qui se i > i+1 usi una variabile d'appoggio e inverti le posizioni i
diventa i+1 e viceversa. Cosi' ad ogni iterazione i numeri piu' piccoli posizionati
in fondo al vettore si spostano in avanti veroso le prime posizioni.
Non so se sono stato chiaro.. ho un esempio in C
//riordino vettore
for (scroll=0 ; scroll<DIM ; scroll++)
{
for(i=0 ; i<(DIM - 1) ; i++)
{
if((vet[i] > vet[i+1]))
{
appo = vet[i+1];
vet[i+1] = vet[i];
vet[i] = appo;
}
}
}
Ciao