StruktoPas Voorbeeld
1
2
3
{--------------------------------------------}
{ QUICKSRT (11-12-2006) }
{ StruktoPas 1.0 (C) Sichemsoft NL }
{--------------------------------------------}
PROGRAM QUICKSRT(input, output);
TYPE ArrayType1 = ARRAY [1..10] OF integer;
VAR tabel : ArrayType1;
i : integer;
g : integer;
r : integer;
s : integer;
hulp : integer;
{--------------------------------------------}
PROCEDURE wissel(VAR a:integer; VAR b:integer); FORWARD;
{--------------------------------------------}
PROCEDURE sorteer(VAR tab:ArrayType1; p:integer; q:integer); FORWARD;
{--------------------------------------------}
FUNCTION Rnd: real;
BEGIN
randomize;
Rnd := random;
END;
{--------------------------------------------}
PROCEDURE vultabel(VAR tab:ArrayType1);
BEGIN
FOR i := 1 TO 10 DO
BEGIN
tab[i] := trunc(Rnd * 100);
END;
END;
{--------------------------------------------}
PROCEDURE schrijftabel(VAR tab:ArrayType1);
BEGIN
FOR i := 1 TO 10 DO
BEGIN
write(tab[i], ' ');
END;
writeln('');
END;
{--------------------------------------------}
PROCEDURE sorteer(VAR tab:ArrayType1; p:integer; q:integer);
BEGIN
IF p < q THEN
BEGIN
g := tab[(p + q) DIV 2];
r := p;
s := q;
WHILE r <= s DO
BEGIN
WHILE tab[r] < g DO
BEGIN
r := r + 1;
END;
WHILE tab[s] > g DO
BEGIN
s := s - 1;
END;
IF r <= s THEN
BEGIN
IF r < s THEN
BEGIN
wissel(tab[r], tab[s]);
schrijftabel(tab);
END;
r := r + 1;
s := s - 1;
END;
END;
sorteer(tab, p, s);
sorteer(tab, r, q);
END;
END;
{--------------------------------------------}
PROCEDURE wissel(VAR a:integer; VAR b:integer);
BEGIN
hulp := a;
a := b;
b := hulp;
END;
{ quicksort }
{--------------------------------------------}
BEGIN
vultabel(tabel);
schrijftabel(tabel);
sorteer(tabel, 1, 10);
readln; {*}
END.
{--------------------------------------------}