summaryrefslogtreecommitdiff
path: root/tests/examplefiles/qsort.prolog
blob: d78de6f1b1a41a3025f3938bb9e246bba8516f7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
partition([], _, [], []).
partition([X|Xs], Pivot, Smalls, Bigs) :-
    (   X @< Pivot ->
        Smalls = [X|Rest],
        partition(Xs, Pivot, Rest, Bigs)
    ;   Bigs = [X|Rest],
        partition(Xs, Pivot, Smalls, Rest)
    ).

quicksort([])     --> [].
quicksort([X|Xs]) --> 
    { partition(Xs, X, Smaller, Bigger) },
    quicksort(Smaller), [X], quicksort(Bigger).