diff options
Diffstat (limited to 'samples/Prolog/quicksort.pl')
| -rw-r--r-- | samples/Prolog/quicksort.pl | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/samples/Prolog/quicksort.pl b/samples/Prolog/quicksort.pl new file mode 100644 index 0000000..eb4467b --- /dev/null +++ b/samples/Prolog/quicksort.pl @@ -0,0 +1,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). |
