Selection Sort in Prolog
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Selection Sort in Prolog
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Nicolaie Popescu-Bodorin, 2009
% http://fmi.spiruharet.ro/bodorin/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Prolog, TP 2.0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DOMAINS
r=real
lr=r*
PREDICATES
selection_sort(lr,lr)
min(lr,r)
min(lr,r,r)
elim1(r,lr,lr)
CLAUSES
% Selection sort by searching for min
% USAGE:
selection_sort([],[]):-!.
selection_sort(L,[H|T]):-
min(L,H),
elim1(H,L,LR),
selection_sort(LR,T).
% min(InputList, Minimum), (i,o)
min([H|T],M):-min(T,H,M).
min([H|T],Ri,R):-
H>=Ri,!,min(T,Ri,R);
H