lang/prolog/1.8.7/src/quicksort

Raw file
Back to index

(* quicksort algorithm nach Clocksin-Mellish *) 
 
(* Example :  quicksort ([1,3,2,4], [1,2,3,4], [])  *) 
 
quicksort ([H|T], S, X) :- 
          split (H, T, A, B), 
          quicksort (A, S, [H|Y]), 
          quicksort (B, Y, X). 
quicksort ([], X, X). 
 
split (H, [A|X], [A|Y], Z) :- A <= H, split (H, X, Y, Z). 
split (H, [A|X], Y, [A|Z]) :- split (H, X, Y, Z). 
split (_, [], [], []).