Si ho risolto da solo scusa ma avevo dimenticato questo post.
L'ho risolta con una variabile di tipo booleana guarda:
codice:repeat scambio:= false; for i:=1 to (a-1) do Begin if num[i]<num[i+1] then Begin scambio:= true; appoggio:= num[i]; num[i]:= num[i+1]; num[i+1]:= appoggio; end; end; until scambio = false;