Sunteți pe pagina 1din 1

e:\ATM\AI\TESTE\arbori\sortari.

pl

Page 1

%minimul dintre doua numere min(X,Y,X):-X=<Y,!. min min(_,Y,Y). %minimul elementelor dintr-o lista minim([X],X). minim([H|L],M):-minim(L,M1),min(H,M1,M). minim %stergerea unui lement dintr-o lista (varianta rudimentara) del(X,[X|L],L). del(X,[H|L],[H|L1]):-del(X,L,L1). %concatenarea a doua liste conc([X|Y],Z,[X|W]) :- conc(Y,Z,W). conc conc([],X,X). conc

% I. Sortarea unei liste prin selectie. VARIANTA1: se alege minimul % dintr-o lista si se aseaza pe prima pozitie % ----------------------------------------------------------------------sortmin([],[]). sortmin(T,[M|S]):-minim(T,M),del(M,T,T1),sortmin(T1,S). % II. TEMA: Sortarea unei liste prin selectie. VARIANTA2: se alege % minimul dintr-o lista si se aseaza pe ultima pozitie % ----------------------------------------------------------------------% % % % % III. Quicksort. Se ia primul element si se aseaza pe pozitia lui finala. Acest element are proprietatea ca ce este situat inaintea acestuia are valoare mai mica decat el (ne vom referi aici cu lista A), iar ce este situat dupa acesta (lista B) are valoare mai mare decat elementul.

quick([],[]). quick([H|T],L):-impart(T,H,A,B),quick(A,L1),quick(B,L2),conc(L1,[H|L2],L). quick impart([],_,[],[]). impart %in prima lista pun elementele mai mici decat H, iar in a doua pe cele mai mari d ecat H impart([H1|T],H,[H1|A],B):-H1=<H,impart(T,H,A,B). impart([H1|T],H,A,[H1|B]):-H<H1,impart(T,H,A,B). %IV. Sortarea prin insertie. sortins([],[]). sortins([H|T],S):-sortins(T,TS),inserez(H,TS,S). inserez(H,[],[H]). inserez inserez(H,[Y|T],[Y|T1]):-H>Y,inserez(H,T,T1),!. inserez inserez(H,[Y|T],[H,Y|T]).

S-ar putea să vă placă și