Tri rapide
Page 1 sur 1
Tri rapide
Procedure Tri_Rapide(Var T:Tab;D,F:Integer);
Var
I,J:Integer;
Begin
If D Begin
I:=D+1;
J:=F;
While (I<=J) Do
Begin
While(T[I]<=T[D]) And(I<=F) Do {Chercher le premier élément}
Begin {supérieur au pivot}
I:=I+1; {à partir de i vers la droite}
End;
While(T[J]>T[D]) And(J>=D+1) Do {Chercher le premier élément}
Begin {inférieur ou égal au pivot}
J:=J-1; {à partir de j vers la gauche}
End;
If I Begin
Permute(T[I],T[J]);
I:=I+1;
J:=J-1;
End;
End;
Permute(T[D],T[J]); {Mettre le pivot à sa position finale}
Tri_Rapide(T,D,J-1);{Trier la partie à gauche du pivot}
Tri_Rapide(T,J+1,F);{Trier la partie à droite du pivot}
End;
End;
Var
I,J:Integer;
Begin
If D
I:=D+1;
J:=F;
While (I<=J) Do
Begin
While(T[I]<=T[D]) And(I<=F) Do {Chercher le premier élément}
Begin {supérieur au pivot}
I:=I+1; {à partir de i vers la droite}
End;
While(T[J]>T[D]) And(J>=D+1) Do {Chercher le premier élément}
Begin {inférieur ou égal au pivot}
J:=J-1; {à partir de j vers la gauche}
End;
If I
Permute(T[I],T[J]);
I:=I+1;
J:=J-1;
End;
End;
Permute(T[D],T[J]); {Mettre le pivot à sa position finale}
Tri_Rapide(T,D,J-1);{Trier la partie à gauche du pivot}
Tri_Rapide(T,J+1,F);{Trier la partie à droite du pivot}
End;
End;
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|