Bubble sort

stellacometa
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
ben2
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

//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

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.