Prolog Bubblesort

时间:2014-03-10 17:01:24

标签: sorting prolog

我正在努力最好地理解有关此代码的所有内容。这就是我目前如何看待正在发生的事情:

所以我可以看到X > Y我们是否交换了元素,如果不是我们递归子列表,直到我们找到X X > Y,如果我们没有,那么列表是排序。 我遇到的问题是我不太了解基本情况,bubblesort(Sorted, Sorted)。我以为你需要一个空列表的基础案例?如果有人可以逐步描述这个程序,我真的很感激。

bubblesort(List,Sorted) :-
   swap(List,List1),
   !,
   bubblesort(List1,Sorted).
bubblesort(Sorted,Sorted).

swap([X,Y|Rest],[Y,X|Rest]) :-   % swaps X with Y if gt(X,Y) is true.
   gt(X,Y).
swap([Z|Rest],[Z|Rest1]) :-      % calls swap on sublists excluding the heads.
   swap(Rest,Rest1).

gt(X,Y) :-                       % true if X is greater than Y.
   X > Y.

0 个答案:

没有答案