小编use*_*419的帖子

如何从两个已排序的列表中生成一个已排序的列表

在 Prolog 中,我必须找出一种方法,将两个已排序的列表合并为一个排序的列表。换句话说:我必须比较两个列表中的头并将最小的添加到新列表中。我想我已经走了很远,但不知怎的,它就是行不通,我不明白为什么不行。顺便说一句,我没有收到任何错误。它只是回馈false

所以,我希望有人能告诉我我做错了什么。

sort([],L,L).
sort(L,[],L).
sort([Head1|Tail1],[Head2|Tail2],L) :- 
    Head1 < Head2 -> append([Head1],L,L2), sort(Tail1,[Head2|Tail2],L2) ; 
    Head1 > Head2 -> append([Head2],L,L2), sort([Head1|Tail1],Tail2,L2) ; 
    Head1 == Head2 -> append([Head1],L,L2), append([Head2],L2,L3), 
                                            sort(Tail1,Tail2,L3).
Run Code Online (Sandbox Code Playgroud)

sorting merge list prolog

3
推荐指数
1
解决办法
5603
查看次数

标签 统计

list ×1

merge ×1

prolog ×1

sorting ×1