我想编写一个带有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的新手
答案 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 -> ....
; ...........
你可以填空。