All pastes #944776 Raw Edit

Selectionsort in Prolog

public text v1 · immutable
·published 2008-03-16 12:37 UTC
rendered paste body
% selectionsort.pl

selectionsort([],[]).
selectionsort([H|T],Sorted) :-
    findmax(T,H,MAX),
    delfirst(MAX,[H|T],Rest),
    selectionsort(Rest,Sorted2),
    append(Sorted2,[MAX],Sorted).

findmax([],CUR,CUR) :- !.
findmax([H|T],CUR,MAX) :-
    H >= CUR,
    findmax(T,H,MAX).
findmax([H|T],CUR,MAX) :-
    H < CUR,
    findmax(T,CUR,MAX).

delfirst(MAX,[MAX|T],T) :- !.
delfirst(MAX,[H|T],L) :-
    delfirst(MAX,T,L2),
    append([H],L2,L).