From 35224b34eaf993922508c92b77009c7f2141873a Mon Sep 17 00:00:00 2001 From: serjflint Date: Thu, 5 Nov 2015 06:06:35 +0000 Subject: [PATCH] Update sorting.pl Bubble and insertion sort added --- prolog/sorting.pl | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/prolog/sorting.pl b/prolog/sorting.pl index 1ad0b0f..34ea835 100644 --- a/prolog/sorting.pl +++ b/prolog/sorting.pl @@ -106,3 +106,24 @@ mergeSort(L2, S2), merge(S1, S2, Out). +%Bubble sort + +swap([X,Y|Rest], [Y,X|Rest]) :- X>Y. +swap([Z|Rest], [Z|Rest1]) :- swap(Rest, Rest1). + +bubbleSort(List, Sorted) :- + swap(List, List1), !, + bubbleSort(List1, Sorted). +bubbleSort(Sorted, Sorted). + +%Insertion sort + +insert(A, [B|C], [B|D]) :- A @> B, !, insert(A, C, D). +insert(A, C, [A|C]). + +insertionSort(L, Sorted) :- insertionSort(L, [], Sorted). + +insertionSort([], Acc, Acc). +insertionSort([H | T], Acc, Sorted) :- + insert(H, Acc, Acc1), + insertionSort(T, Acc1, Sorted).