qsort.pp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. {****************************************************************************
  2. Copyright (c) 1993,94 by Florian Kl„mpfl
  3. Translated by Eric Molitor ([email protected])
  4. ****************************************************************************}
  5. { Demonstration Program in FPKPascal }
  6. const
  7. max = 1000;
  8. type
  9. tlist = array[1..max] of integer;
  10. var
  11. data : tlist;
  12. procedure qsort(var a : tlist);
  13. procedure sort(l,r: integer);
  14. var
  15. i,j,x,y: integer;
  16. begin
  17. i:=l;
  18. j:=r;
  19. x:=a[(l+r) div 2];
  20. repeat
  21. while a[i]<x do i:=i+1;
  22. while x<a[j] do j:=j-1;
  23. if not(i>j) then
  24. begin
  25. y:=a[i];
  26. a[i]:=a[j];
  27. a[j]:=y;
  28. i:=i+1;
  29. j:=j-1;
  30. end;
  31. until i>j;
  32. if l<j then sort(l,j);
  33. if i<r then sort(i,r);
  34. end;
  35. begin
  36. sort(1,max);
  37. end;
  38. var
  39. i : longint;
  40. begin
  41. write('Creating ',Max,' random numbers between 1 and 30000');
  42. randomize;
  43. for i:=1 to max do
  44. data[i]:=random(30000);
  45. write(#13#10'Sorting...');
  46. qsort(data);
  47. writeln;
  48. for i:=1 to max do
  49. write(data[i]:8);
  50. end.