:-[listes]. % Consulte le fichier listes.pl

 /*          LE TRI NAIF             */


tri(L1,L2):-
	permuter(L1,L2),
	ordonnee(L2).

ordonnee([]).
ordonnee([X]). /* Une liste a un element */
ordonnee([X,Y|L]):-
	X =< Y,
	ordonnee([Y|L]).
/*
| ?-  tri([1,2,6,3,9,4],L).
 
L = [1,2,3,4,6,9] ? ;
 
no
| ?-     
*/

 /*          LE TRI PAR SELECTION            */

tri_s([H|L],[M|L1]):-
        extract_min(L,H,L2,M),
        tri_s(L2,L1).
tri_s([],[]).

extract_min([],M,[],M).
extract_min([H|L1],M0,[H|L2],M):-
        M0 =< H,
        extract_min(L1,M0,L2,M).
extract_min([H|L1],M0,[M0|L2],M):-
        H < M0,
        extract_min(L1,H,L2,M).

/*
| ?-  tri([1,2,6,3,9,4],L).
 
L = [1,2,3,4,6,9] ? ;
 
no
| ?-     
*/
