quickSort(L,S) :- quickSort_dl(L,S,[]). quickSort_dl([],L,L). quickSort_dl([E|R],M,N) :- splitLGE(E,R,L,GE), quickSort_dl(L,M,[E|GESorted]), quickSort_dl(GE,GESorted,N). splitLGE(_,[],[],[]). splitLGE(X,[Y|Ys],[Y|L],GE) :- Y < X, splitLGE(X,Ys,L,GE). splitLGE(X,[Y|Ys],L,[Y|GE]) :- Y >= X, splitLGE(X,Ys,L,GE).