home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 01 / prolog / qsort.pro < prev   
Encoding:
Text File  |  1987-11-03  |  923 b   |  36 lines

  1. module qsort.
  2.  
  3. /*$eject*/
  4. body.
  5.  
  6. append([],X,X) .
  7. append([H|L],L1,[H|L2]) :- 
  8.      append(L,L1,L2) .
  9.  
  10. split(_,[],[],[]) .
  11. split(H,[A|X],[A|Y],Z) :- 
  12.      A<=H, !, split(H,X,Y,Z) .
  13. split(H,[A|X],Y,[A|Z]) :- 
  14.      A>H, !, split(H,X,Y,Z) .
  15.  
  16. qsort([],[]) .
  17. qsort([H|T],S) :- 
  18.      split(H,T,A,B), qsort(A,A1), qsort(B,B1), 
  19.        append(A1,[H|B1],S) .
  20.  
  21. count([],0) .
  22. count([H|T],N) :- 
  23.      count(T,N1), N is N1+1 .
  24.  
  25. testlist([3,2,45,67,8,54,2312,1,33,22,3,44,44,44,55,33,34,2,1,2,
  26.           445,6,7,53,2,1,23,44,55,66,54,33,22,3,33,22,3,44,33,22,
  27.           3,44,44,44,55,33,44,44,55,33,44,44,44,33,22,3,44,44,44,
  28.           76,1267,29,32,76,348,9745,2457,9004,227,987,137,87,246,
  29.           18,23,76,86,39,923,896,35,57,22,98,9862,4567,55,33,55,
  30.           33,22,12,45,67,7878,8,8,8,55,33]) .
  31.  
  32.  
  33. :- write("Start..."), nl, testlist(L), qsort(L,R1), write("...Ende"), nl.
  34.  
  35. endmod /* qsort */  .
  36.