Prolog 将X插入排序列表中的正确位置

Prolog 将X插入排序列表中的正确位置,prolog,Prolog,在prolog中,如何在排序列表中的正确位置插入X 我的尝试: insert(X,[Y|Rest],[X,Y|Rest]):- X @< Y; insert(X,Rest,BiggerRest). 插入(X[Y|Rest],[X,Y|Rest]):- X<Y; 插入(X,Rest,BiggerRest)。 你的思路是对的,但你需要做到这三点 insert(X, [], [X]). insert(X, [Y|Rest], [X,Y|Rest]) :- X @< Y, !. i

在prolog中,如何在排序列表中的正确位置插入X

我的尝试:

insert(X,[Y|Rest],[X,Y|Rest]):-
X @< Y;
insert(X,Rest,BiggerRest).
插入(X[Y|Rest],[X,Y|Rest]):-
X<Y;
插入(X,Rest,BiggerRest)。

你的思路是对的,但你需要做到这三点

insert(X, [], [X]).
insert(X, [Y|Rest], [X,Y|Rest]) :-
    X @< Y, !.
insert(X, [Y|Rest0], [Y|Rest]) :-
    insert(X, Rest0, Rest).
插入(X,[],[X])。
插入(X[Y|Rest],[X,Y|Rest]):-
X@
太棒了,谢谢!是否可以使用内置谓词集of执行相同的过程?@General_9:我不知道你的意思。内置谓词集of不是基本上建立了一个不包含重复项的有序项列表吗。在试图将一个元素插入到有序列表中时,有没有办法利用该功能?@General_9:我想你可以只做
sort([X | Xs],Sorted)
在正确的位置插入
X
。但这需要O(n lgn)时间,而上面的需要O(n)。