Exercice sur le tri d'un tableau
Bonjour
J'ai un exercice et je demande juste si mon raisonnement est bon, merci de votre aide
Citation:
Ecrire un rogramme contenant une procédure qui reçoit un tableau
d'entiers non trié et sa longueur effective en paramètres, et qui y déplace
en fin de tableau tous les éléments dépassant une valeur donnée (ici 10).
Hormis le critère de déplacement, l'ordre du tableau doit être respecté.
Ex.: si x=10, alors 5,12,-8,27,1,17 devient 5,-8,1,12,27,17.
Le traitement doit se faire en un seul passage. (Hypothèse inductive)
Mon raisonnement est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
procedure deplacer(const x:Integer;var t:tableau; const long:Integer);
var
i,j,k,tmp :Integer;
begin
if long>1 then
begin
j:=1;
while (j<long)and(t[j]<x) do
inc(j);
for i:=j to long do
if t[i]<=x then
begin
tmp:=t[i];
for k:=i downto j+1 do
t[k]:=t[k-1];
t[j]:=tmp;
inc(j)
end
end
end; |