用Erlang实现有序列表合并

 采用的算法为分别取出两个有序列表的第一个元素进行比较,将较小的元素从源容器列表移到新列表中

 1 -module(sortedlistconcat).
 2 -export([start/2]).
 3 
 4 start(L1, L2) ->
 5     L = concat(L1, L2, []),
 6     io:format("~w~n", [L]).
 7 
 8 concat([H1|T1], [H2|T2], L) ->
 9     if
10         H1 =< H2 -> concat(T1, [H2|T2], [H1] ++ L);
11         H1 > H2 -> concat([H1|T1], T2, [H2] ++ L)
12     end;
13 concat([], [], L) ->
14     lists:reverse(L);
15 concat([], L2, L) ->
16     lists:reverse(L) ++ L2;
17 concat(L1, [], L) ->
18     lists:reverse(L) ++ L1.

 

 

posted on 2012-12-12 16:55  应无所住而生其心  阅读(559)  评论(0)    收藏  举报

导航