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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
program TriePermutation;
uses SysUtils, Windows;
CONST MAX_ELT = 10000;
VAR TDebut, TFin : Longword; // Variables Globales, TempsDébut et TempsFin en ms
NbComp : integer;
TYPE TabInt = Array [ 1..MAX_ELT ] OF integer;
Procedure InitTabInt ( VAR leTabInt : TabInt; NbElts : integer );
// Initialise le tableau, TabInt, du nbr d'éléments, NbElts
VAR i, j : integer;
begin
j := 0;
for i:= NbElts DOWNTO 1 DO
begin
j := j + 1;
leTabInt [ j ] := i;
end;
end;
Procedure AfficherTableau ( leTabInt : TabInt; NbElts : integer );
// Affiche le tableau, leTabInt
VAR i : integer;
Begin
Write ( '[' );
FOR i := 1 TO NbElts DO Write ( leTabInt [ i ] : 3 );
Write ( ' ]' );
End;
Procedure TrieBulle ( VAR leTabInt : TabInt; NbElts : integer );
// Trie le tableau, leTabInt, façon Trie à Bulle
VAR i, j, aux : integer;
begin
NbComp := -1;
TDebut := gettickCount();
AfficherTableau ( leTabInt, NbElts );
Writeln;
FOR i := 1 TO NbElts DO Begin
FOR j := NbElts DOWNTO i DO Begin
IF ( leTabInt [ j - 1 ] > leTabInt [ j ] ) THEN
Begin
aux := leTabInt [ j - 1 ];
leTabInt [ j - 1 ] := leTabInt [ j ];
leTabInt [ j ] := aux;
// Affiche le tableau, leTabInt
AfficherTableau ( leTabInt, NbElts );
Writeln;
end;
end;
end;
TFin := gettickCount();
end;
VAR i, LE_MAX_ELTS : integer;
unTabInt : TabInt;
TempsExec : Longword;
Begin
Writeln;
Writeln(' ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ');
Writeln(' ² ² ');
Writeln(' ² EX ALGO -- TRIE ET PERMUTATIONS -- ² ');
Writeln(' ² ² ');
Writeln(' ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²² ');
Writeln;
Writeln;
Writeln ( '--> Saisir le nombre d elements du tableau, >1 et MAX=10 000 :' );
Readln ( LE_MAX_ELTS );
While (( LE_MAX_ELTS <= 1 ) OR ( LE_MAX_ELTS > MAX_ELT )) DO Begin
Writeln;
Writeln ( '--> Saisir le nombre d elements du tableau, >1 et MAX=10 000 :' );
Readln ( LE_MAX_ELTS );
end;
// Initialisation du tableau, unTabInt
InitTabInt ( unTabInt, LE_MAX_ELTS );
Writeln;
Writeln ( '² Votre Tableau : ²' );
Writeln;
// Affiche le tableau, leTabInt
AfficherTableau( unTabInt, LE_MAX_ELTS );
Writeln;
Writeln;
Writeln ( '² Comparaisons : ²' );
Writeln;
// Trie le tableau, leTabInt, façon Trie à Bulle
TrieBulle ( unTabInt, LE_MAX_ELTS );
Writeln;
Writeln;
Writeln ( '² Nombre de Comparaisons : ²' );
Writeln;
Writeln('Le nombre de comparaisons est de : ', NbComp);
Writeln;
Writeln;
Writeln ( '² Temps Execution : ²' );
Writeln;
TempsExec := TFin-TDebut;
Writeln('Le temps d execution du trie a bulle est de : ');
Writeln;
Writeln('[ ', TempsExec, ' ms ] soit donc [ ', formatfloat('0.00', TempsExec/1000),' sec ]');
Writeln;
Writeln;
Writeln ( 'Fin' );
Readln;
end. |
Partager