home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / lifeos2.zip / LIFE-1.02 / TESTS / LF / QSORT2.LF < prev    next >
Text File  |  1996-06-04  |  951b  |  39 lines

  1. % FILE. . . . . /_/udir4/_/hassan/life/quick_sort
  2. % EDIT BY . . . Hassan Ait-Kaci
  3. % ON MACHINE. . Prlp22
  4. % STARTED ON. . Wed Jan 8 11:02:17 1990
  5.  
  6. % Last modified on Tue Feb 18 12:26:12 MET 1992 by mezhoud
  7.  
  8. q_sort([H|T])     ->
  9.         append(L1,[H|L2]) | 
  10.              LM=split(H,T,couple(left=>[],right=>[])),
  11.                        L1= q_sort(l(LM)),
  12.                        L2= q_sort(r(LM)).
  13. q_sort([])     -> [].
  14.  
  15. split(X,[H|T],C)->
  16.                    cond(H<X    ,
  17.                      split(X,T,ll(C,[H|l(C)])),
  18.                      split(X,T,rr(C,[H|r(C)]))
  19.             ).
  20. split(@,[],C)     -> C.
  21.  
  22.  
  23. %%%%%%%%%%%%%%%%%%%%   data structure COUPLE %%%%%%%%%%%%%
  24.  
  25. %couple ( left    =>  X:@,
  26. %        right    => Y:@ ).
  27.  
  28. l(couple( left    => X:@,
  29.           right    => Y:@ ))-> X.
  30.  
  31. r(couple( left    => X:@,
  32.           right    => Y:@ ))-> Y.
  33.  
  34. ll(C:couple, X:@)->    couple( left  => X:@,
  35.                                  right=> r(C) ).
  36.  
  37. rr(C:couple, X:@)->      couple( left => l(C),
  38.                                 right => X:@  ).
  39.