home *** CD-ROM | disk | FTP | other *** search
- module qsort.
-
- /*$eject*/
- body.
-
- append([],X,X) .
- append([H|L],L1,[H|L2]) :-
- append(L,L1,L2) .
-
- split(_,[],[],[]) .
- split(H,[A|X],[A|Y],Z) :-
- A<=H, !, split(H,X,Y,Z) .
- split(H,[A|X],Y,[A|Z]) :-
- A>H, !, split(H,X,Y,Z) .
-
- qsort([],[]) .
- qsort([H|T],S) :-
- split(H,T,A,B), qsort(A,A1), qsort(B,B1),
- append(A1,[H|B1],S) .
-
- count([],0) .
- count([H|T],N) :-
- count(T,N1), N is N1+1 .
-
- testlist([3,2,45,67,8,54,2312,1,33,22,3,44,44,44,55,33,34,2,1,2,
- 445,6,7,53,2,1,23,44,55,66,54,33,22,3,33,22,3,44,33,22,
- 3,44,44,44,55,33,44,44,55,33,44,44,44,33,22,3,44,44,44,
- 76,1267,29,32,76,348,9745,2457,9004,227,987,137,87,246,
- 18,23,76,86,39,923,896,35,57,22,98,9862,4567,55,33,55,
- 33,22,12,45,67,7878,8,8,8,55,33]) .
-
-
- :- write("Start..."), nl, testlist(L), qsort(L,R1), write("...Ende"), nl.
-
- endmod /* qsort */ .