home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / TURBOPAS / PAS_ENG.ZIP / SORT-S.LIB < prev    next >
Encoding:
Text File  |  1985-07-18  |  636 b   |  43 lines

  1.  
  2.  
  3. { --> 178}
  4.  
  5. procedure {shell} sort(var a: ary; n: integer);
  6. { Shell-Metzner sort }
  7. { Adapted from 'Programming in pascal',
  8.  P. Grogono, Addison-Wesley, 1980 }
  9.  
  10. var done : boolean;
  11.  jump,i,j: integer;
  12.  
  13. procedure swap(var p,q: real);
  14. var hold : real;
  15.  
  16. begin
  17.   hold:=p;
  18.   p:=q;
  19.   q:=hold
  20. end;  { swap }
  21.  
  22. begin
  23.   jump:=n;
  24.   while jump>1 do
  25.     begin
  26.       jump:=jump div 2;
  27.       repeat
  28.  done:=true;
  29.  for j:=1 to n do
  30.    begin
  31.      i:=j+jump;
  32.      if a[j]>a[i] then
  33.        begin
  34.   swap(a[j],a[i]);
  35.   done:=false
  36.      end  { if }
  37.  end  { for }
  38.       until done
  39.   end   { while }
  40. end;  { SORT }
  41.  
  42.  
  43.