如何在Prolog中定义排序(List,Sorted)



如何在Prolog中定义谓词sort(List,Sorted) ?例如,sort([3,2,4],[2,3,4])返回true。我知道这有一个内置谓词,但我想知道如何定义它。

这不是一个答案,而是一些对于评论来说太长了的建议。

您可能已经意识到这一点,但是仍然要记住,定义排序纯粹是为了学习Prolog语法而进行的练习。如果你真的需要对东西进行排序,你应该总是使用库sort

,"…但是我想知道如何定义它":这是什么意思?这是否意味着你已经选择了一个排序算法,但你不确定如何在Prolog中实现它?或者你很难从几个算法中选择一个?或者你不知道存在什么排序算法?

还有一个建议:在选择排序算法时,最好选择用于单链表的算法。Prolog列表与单链表非常相似。

还有一个建议:看看现有的代码(正如一位评论者所指出的那样),也看看其中一个免费Prolog实现的库代码。例如,下面是可从SWI-Prolog获得的一类代码的完整代码。这是很容易找到的,如果你只花几分钟搜索,而不是立即寻求帮助。

最新更新