Sie sind auf Seite 1von 6

Trie par selection :

Program triselection ;
uses wincrt ;
type
tab=array [1..20] of integer ;
var
n,x,p : integer ; t : tab ;

procedure saisie (var n : integer ; var t :tab );


var
i : integer ;
begin
repeat
writeln('Saisir la taille du tableau :');
readln(n);
until n in [5..20] ;
For i:= 1 to n do
begin
repeat
writeln('Saisir l''élément',i) ;
readln(t[i]) ;
until (t[i] > 0)
end;
end;

function pos_max(n : integer ;t :tab; p :integer):integer ;


var
max,i : integer ;
Begin
max:=p ;
for i:= p to n do
begin
if t[i]>t[max] then
max:=i ;
end;
pos_max:=max ;
End;

procedure trie (n : integer ; var t :tab ) ;


var
i,max,p : integer ;
Begin
for i:= 1 to n-1 do
begin
p:=pos_max(n,t,i);
x:=t[i];
t[i]:=t[p];
t[p]:=x ;
end;
End;

procedure affiche (n : integer ; t :tab) ;


var
i : integer ;
Begin
for i:= 1 to n-1 do
begin
write(t[i]);
write('|');
end;
write(t[n]);
End;

Begin
saisie(n,t);
trie(n,t);
affiche(n,t);
End.

Le tri par insertion

Program triinsertion ;
uses wincrt ;
type
tab=array[1..20] of integer ;
var
n,x,i : integer ; t: tab ;

procedure saisie (var n : integer ;var t:tab);


var
i : integer ;
Begin
repeat
writeln('saisir la taille du tableau :');
readln(n);
until n in [5..20] ;
For i:= 1 to n do
begin
repeat
writeln('Saisir l''element ',i);
readln(t[i]);
until t[i] > 0 ;
end;
End;

function position (t:tab ; i : integer ): integer ;


var
j : integer ;
Begin
j:=0 ;
repeat
j:=j+1 ;
until t[j] >= t[i] ;
position:=j ;
End;

procedure tri(var t : tab ; n:integer );


var
int,i,j,p : integer ;
Begin
for i:=2 to n do
begin
p:=position(t,i);
if p <> i then
begin
int:=t[i] ;
for j :=i-1 downto p do
begin
t[j+1]:=t[j] ;
end;
t[p]:=int ;
end;
end;
End;

procedure affiche (var t :tab ; n : integer );


var
i:integer ;
begin
for i:= 1 to n-1 do
begin
write(t[i]);
write('|');
end;
write(t[n]);
end;

begin
saisie(n,t);
x:=position(t,i);
tri(t,n);
affiche(t,n);
end.

Trie à bulle :

program tri_tab;
uses wincrt;
type
tab= array [1..25] of integer;
var
t:tab;
n:integer;

procedure saisie(var n:integer; var t:tab);


var
i:integer;
begin
repeat
writeln('donnner le nbre d''element du tableau');
read(n);
until n in [5..25];

For i:=1 to n do
begin
writeln('donner l''element ',i);
read(t[i]);
end;
end;

procedure tri(n:integer; var t:tab);


var
verif:boolean;
i,x:integer;
begin
repeat
verif:=true;
for i := 1 to n-1 do
begin
if t[i]>t[i+1] then
begin
x:=t[i];
t[i]:=t[i+1];
t[i+1]:=x;
verif:=false;
end;
end;
until verif=true;
end;

procedure affiche(n:integer; t:tab);


var
i:integer;
begin
write('| ');
for i:=1 to n do
begin
write(t[i],' | ');
end;
end;

BEGIN
saisie(n,t);
tri(n,t);
affiche(n,t);
END.

Recherche séquentiel :

program sequentielle ;
uses wincrt ;
type
tab = array [1..20] of integer ;
var
t : tab ;
n,e : integer ;
x : boolean ;

procedure saisie ( var n,e : integer ;var t :tab);


var
i : integer ;
begin
repeat
writeln('Saisir la taille du tableau :');
readln(n);
until n in [5..20];
for i:= 1 to n do
begin
repeat
writeln('Saisir l''élement ',i);
readln(t[i]);
until t[i] > 0 ;
end;
writeln('saisir un entier :');
readln(e);
end;

function existe (n,e : integer ; t :tab) : boolean ;


var
i : integer ;
verif : boolean ;
begin
verif := false ;
i:=1 ;
repeat
i:=i+1
until (t[i]=e) or (i=n) ;
if t[i]=e then verif:=true else verif:=false ;
existe:=verif ;
end;

begin
saisie(n,e,t);
x:=existe(n,e,t);
if x=true then writeln(e,' existe dans le tableau') else if x=false then
writeln(e,' n''existe pas dans le tableau');
end.

Recherche dichotomique :

program dichotomique ;
uses wincrt ;
type
tab = array [1..20] of integer ;
var
t : tab ;
n,e : integer ;
x : boolean ;

procedure saisie ( var n,e : integer ;var t :tab);


var
i : integer ;
begin
repeat
writeln('Saisir la taille du tableau :');
readln(n);
until n in [5..20];
for i:= 1 to n do
begin
repeat
writeln('Saisir l''élement ',i);
readln(t[i]);
until t[i] > 0 ;
end;
writeln('saisir un entier :');
readln(e);
end;

function existe (n,e : integer ; t :tab) : boolean ;


var
i,bi,bs : integer ;
x : boolean ;
begin
x:=false ;
bi:=1 ;
bs:=n ;
repeat n:=(bi+bs) div 2 ;
if t[n] = e then
x:=true
else if t[n] < e then
bi:=n+1
else bs:=n-1 ;
until (x=true) or (bi >= bs) ;
end;

begin
saisie(n,e,t);
x:=existe(n,e,t);
if x=true then writeln(e,' existe dans le tableau') else if x=false then
writeln(e,' n''existe pas dans le tableau');
end.

Das könnte Ihnen auch gefallen