14 lines
374 B
Prolog
14 lines
374 B
Prolog
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).
|