% Quicksort in Prolog. % filter(List, Pivot, Lower, Higher) divides List up into items Lower & Higher than Pivot filter( [], _, [], []). filter( [X|Y], P, [X|L], H ):- X =< P, filter(Y, P, L, H). filter( [X|Y], P, L, [X|H] ):- X > P, filter(Y, P, L, H). % Here is the sort qsort([], []):-!. qsort([X], [X]):-!. qsort([X|Y], SXY):- filter(Y, X, L, H), qsort(L,SL), qsort(H,SH), append(SL, [X], SLX), append(SLX, SH, SXY).