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