将两个无序列表合并到prolog中的有序列表中

时间:2013-05-12 05:33:31

标签: prolog

我想编写一个带有2个未排序列表的谓词,并生成一个排序列表输出。

    sort_lists(List1, List2, List3) 

例如:

    [10,8,2,4,5]
    [3,7,6,9,11]

我希望将它们合并到降序排序列表中,不事先对它们进行排序并进行简单合并。最终结果将是:

    [11,10,9,8,7,6,5,4,3,2]

我有一个想法是将数字一次放入第三个列表,每次检查第一个数字小于当前被检查的数字,并将数字插入该位置,但我正在努力实现这个..我是prolog的新手

1 个答案:

答案 0 :(得分:3)

您所描述的是insertion sort

的应用
join(L1,L2,S):-
   append(L1,L2,[A|B]) -> insert_each(B,[A],S)
   ; S = [].

insert_each([],S,S).
insert_each([A|B],L,S):- 
   insert(A, ...
   insert.......

insert(A,[B|C], X):- 
   A > B -> ....
   ; ...........

你可以填空。