Guest User

Untitled

a guest
May 10th, 2012
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.30 KB | None | 0 0
  1. type p_vect = ^vect;
  2.      vect = array[0..256] of integer;
  3.  
  4. function join(u, w: p_vect): p_vect;
  5. var new: p_vect;
  6.     j: byte;
  7. begin
  8.      for j := 1 to u^[0] do
  9.      begin
  10.           new^[new^[0]] := u^[j];
  11.           inc(new^[0])
  12.      end;
  13.  
  14.      for j := u^[0] + 1 to w^[0] do
  15.      begin
  16.           new^[new^[0]] := w^[j];
  17.           inc(new^[0])
  18.      end;
  19.  
  20.      join := new
  21. end;
  22.  
  23. function qsort(v: p_vect): p_vect;
  24. var pivot, j: byte;
  25.     lo, hi: p_vect;
  26. begin
  27.      if v^[0] <= 1 then
  28.         qsort := v;
  29.  
  30.      randomize;
  31.  
  32.      pivot := random(v^[0] - 1) + 1;
  33.  
  34.      for j := 1 to v^[0] do
  35.      begin
  36.           if j = pivot then continue;
  37.           if v^[j] <= v^[pivot] then
  38.           begin
  39.                lo^[lo^[0]] := v^[j];
  40.                inc(lo^[0])
  41.           end
  42.           else
  43.           begin
  44.                hi^[hi^[0]] := v^[j];
  45.                inc(hi^[0])
  46.           end
  47.      end;
  48.  
  49.      lo^[lo^[0]] := v^[pivot];
  50.      inc(lo^[0]);
  51.  
  52.      qsort := join(lo, hi)
  53. end;
  54.  
  55. var demo: p_vect;
  56.     len, i: byte;
  57.     t: integer;
  58.  
  59. begin
  60.      readln(len);
  61.  
  62.      demo^[0] := len;
  63.  
  64.      for i := 1 to len do
  65.      begin
  66.          readln(t);
  67.          demo^[i] := t
  68.      end;
  69.  
  70.      demo := qsort(demo);
  71.  
  72.      for i := 1 to len do
  73.          writeln(demo^[i]);
  74.  
  75.      readln
  76. end.
Advertisement
Add Comment
Please, Sign In to add comment