2

我想编写一个谓词,它需要 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]

我的一个想法是一次将一个数字放入第三个列表中,每次检查第一个小于当前检查数字的数字,并将数字插入该位置,但我正在努力实现这一点。 .我对序言很陌生

4

1 回答 1

3

您描述的是插入排序的应用:

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 -> ....
   ; ...........

你可以填空。

于 2013-05-12T06:27:34.650 回答