zoeken
StruktoGraaf
StruktoPas
StruktoJS / C
Componenten
Gratis software

StruktoPas Voorbeeld 1 2 3

quicksort.psd
 {--------------------------------------------}
 { 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.

 {--------------------------------------------}