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]

私が持っていた 1 つのアイデアは、番号を 1 つずつ 3 番目のリストに配置し、そのたびに現在チェックされている番号よりも小さい最初の番号をチェックし、その位置に番号を挿入することでしたが、これを実装するのに苦労しています。 . 私はプロローグを始めたばかりです

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 に答える