【发布时间】:2011-05-21 12:27:58
【问题描述】:
我正在尝试从 Prolog 中的两个已排序列表中获取第三个排序列表。 算法如下: 1.比较两个列表的头部 1.1 如果第一个小于或等于第二个,则将其插入到第三个列表中,然后将其从第一个列表中删除。 1.2 否则,将第二个列表的头部插入第三个并从第二个中删除。 2. 重复这些步骤,直到一个列表为空。
理论上这应该可行,但我缺少一些东西。
这是我的代码:
insSort([],[],[]).
insSort([],L,L).
insSort(L,[],L).
insSort([H1 | T1],[H2 | T2],L) :- H1 =< H2,
append([H1],[],L1),
insSort(T1,[H2 | T2],L1),L=L1,!.
insSort([H1 | T1],[H2 | T2],L) :- append([H2],[],L1),
insSort(T2,[H1 | T1],L1),L=L1.
【问题讨论】:
-
用当前代码得到什么结果?
-
@Osiris,我得到的结果是
false。 -
你知道如何获得
true吗?