% quick sort   and required procedures. NB @< etc. works on alphanumerics

quicksort([],[]).
quicksort([K|R],E):-split(R,K,E1,E2), quicksort(E1,S1),
                quicksort(E2,S2),append(S1,[K|S2],E).

split([],_,[],[]).
split([X|R],K,[X|E1],E2):- X @=< K,split(R,K,E1,E2).
split([X|R],K,E1,[X|E2]):- X @> K, split(R,K,E1,E2).

