miércoles, 23 de enero de 2008

Métodos de Ordenación en lenguaje Prolog

%%%%%%%%%%%%%%%%%%% ORDENACION %%%%%%%%%%%%%%%%%%%%%%

% Ordenacion por permutacion.

ordena1(L,S):-permutacion(L,S),ordenada(S).

permutacion([],[]).
permutacion([H|T],S):-permutacion(T,T1),guarda(H,T1,S).

guarda(X,L,[X|L]).
guarda(X,[H|T],[H|S]):-guarda(X,T,S).

ordenada([]).
ordenada([_]).
ordenada([A,B|T]):-A>=B,ordenada([B|T]).

% ----------------------------------------------------

% Ordenacion por insercion.

ordena2([],[]).
ordena2([H|T],S):-ordena2(T,R),inserta(H,R,S).

inserta(X,[],[X]).
inserta(X,[H|T],[X,H|T]):-X>=H,!.
inserta(X,[H|T],[H|S]):-inserta(X,T,S).

% ----------------------------------------------------


% Ordenacion por el metodo de la burbuja.

ordena3(L1,L2):-append(U,[A,B|V],L1),Bordena3(L1,L1).