program QSort;

const
  MAX = 10-1;
  ZAKRES = 1000;

var
  tab: array[0..MAX] of Integer;
  i:integer;

{ Uzupelnianie tablicy losowymi wartosciami}
procedure UzupTablica;
var
  i: integer;
begin
  for i:=0 to MAX do tab[i]:= Random(ZAKRES+1);
end;

procedure WypTab;
var
  i: integer;
begin
  for i:=0 to MAX do Write(tab[i]:8);
end;

procedure quicksort(var tab: array of integer; left, right:integer);
var
  i, m, z: integer;
begin
  m:=left;
  for i:=left+1 to right do
    if tab[i]<tab[left] then
    begin
      Inc(m);
      z:=tab[m]; tab[m]:=tab[i]; tab[i]:=z;
    end;
  z:=tab[left]; tab[left]:=tab[m]; tab[m]:=z;
  if left < m-1 then quicksort(tab, left, m-1);
  if m+1 < right then quicksort(tab, m+1, right);
end;

begin
  Writeln;
  Randomize;
  UzupTablica;  
  Writeln;
  QuickSort(tab,0,MAX);
  WypTab;
  WriteLn('Press Enter..');
  ReadLn;
end.