Download code

From LiteratePrograms

Jump to: navigation, search

Back to Merge_sort_(Prolog)

Download for Windows: single file, zip

Download for UNIX: single file, zip, tar.gz, tar.bz2

mergesort.pl

 1 mergesort([], []). 
 2 mergesort([A], [A]).
 3 
 4 mergesort([A, B | Rest], S) :-
 5   divide([A, B | Rest], L1, L2),
 6   mergesort(L1, S1),
 7   mergesort(L2, S2),
 8   my_merge(S1, S2, S).
 9 
10 divide([], [], []).
11 divide([A], [A], []).
12 
13 divide([A, B | R], [A | Ra], [B | Rb]) :-  divide(R, Ra, Rb).
14 
15 my_merge(A, [], A).
16 my_merge([], B, B).
17 
18 my_merge([A | Ra], [B | Rb], [A | M]) :-
19   A =< B,
20   my_merge(Ra, [B | Rb], M).
21 my_merge([A | Ra], [B | Rb], [B | M]) :-
22   A > B,
23   my_merge([A | Ra], Rb, M).
24 


Views
Personal tools