Skip to content

Instantly share code, notes, and snippets.

@AntoineAugusti
Created March 8, 2013 18:29
Show Gist options
  • Save AntoineAugusti/5118672 to your computer and use it in GitHub Desktop.
Save AntoineAugusti/5118672 to your computer and use it in GitHub Desktop.
program triInsertion;
const MAX = 20;
var t : array[1..MAX] of integer;
var nb : integer;
type tableau = array[1..MAX] of integer;
{On recherche où placer l'élément sur l'intervalle [1..borneSup]}
function obtenirIndiceDInsertion (t : tableau; borneSup, lEntier : integer) : integer;
var i : integer;
begin
i := 1;
while ((lEntier > t[i]) AND (i < borneSup)) do
i := i + 1;
obtenirIndiceDInsertion := i;
end;
{On décale les entiers vers la droite du tableau. À gauche de la borne inf, le tableau est trié}
procedure decaler (var t : tableau; borneInf, borneSup : integer);
var i : integer;
begin
for i := borneSup downto (borneInf + 1) do
t[i] := t[i-1];
end;
procedure afficherTab (t : tableau; nb : integer);
var i : integer;
begin
for i := 1 to nb do
writeln(t[i]);
end;
procedure triParInsertion (var t : tableau; nb : integer);
var i, j, temp : integer;
begin
for i := 2 to nb do
begin
j := obtenirIndiceDInsertion(t, i, t[i]);
temp := t[i];
decaler(t, j, i);
t[j] := temp;
end;
end;
{Programme principal, testons le tout}
begin
t[1] := 5;
t[2] := 4;
t[3] := 3;
t[4] := 2;
t[5] := 1;
t[6] := -5;
t[7] := -10;
t[8] := 50;
nb := 8;
triParInsertion(t, nb);
afficherTab(t, nb);
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment