用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.
上善若水
原文地址:https://www.cnblogs.com/netbuddy/p/2814343.html