Advertisement
Guest User

Modula 2 :: QSORT

a guest
Sep 19th, 2015
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MODULE Test;
  2.  
  3. IMPORT STextIO, SWholeIO, RandomNumber;
  4.  
  5. VAR
  6.     a: ARRAY [1..10] OF CARDINAL;
  7.     i: CARDINAL;
  8.  
  9. PROCEDURE QSORT(l, r: CARDINAL);
  10. VAR
  11.     i, j: CARDINAL;
  12.     x, y: CARDINAL;
  13. BEGIN
  14.     i := l;
  15.     j := r;
  16.     x := a[l + RandomNumber.RandomCard(0, r - l + 1)];
  17.     WHILE i < j DO
  18.         WHILE a[i] < x DO
  19.             i := i + 1;
  20.         END;
  21.         WHILE x < a[j] DO
  22.             j := j - 1;
  23.         END;
  24.         IF i <= j THEN
  25.             y := a[i];
  26.             a[i] := a[j];
  27.             a[j] := y;
  28.             i := i + 1;
  29.             j := j - 1;
  30.         END;
  31.     END;
  32.     IF i < r THEN
  33.         QSORT(i, r);
  34.     END;
  35.     IF l < j THEN
  36.         QSORT(l, j);
  37.     END;
  38. END QSORT;
  39.  
  40. BEGIN
  41.     FOR i := 1 TO 10 DO
  42.         a[i] := RandomNumber.RandomInt(0, 100);
  43.         SWholeIO.WriteCard(a[i], 0);
  44.         STextIO.WriteChar(' ');
  45.     END;
  46.     STextIO.WriteLn;
  47.     QSORT(1, 10);
  48.     FOR i := 1 TO 10 DO
  49.         SWholeIO.WriteCard(a[i], 0);
  50.         STextIO.WriteChar(' ');
  51.     END;
  52.     STextIO.WriteLn;
  53. END Test.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement