我想以列表的第二个元素为基础在Prolog中实现Quicksort,但是我不确定该如何去做。有人告诉我可以将输入列表成对表示:[第一| [枢纽|尾巴]],但我不确定如何使用它来帮助我。我是Prolog的新手,所以非常感谢任何提示,谢谢。 这是我为Quicksort编写的代码,它使用第一个元素作为枢轴:
qsort([],[]):- !.
qsort([Pivot|Tail],Sorted):-
split(Pivot,Tail,Less,Greater),
qsort(Less,SortedLess),
qsort(Greater,SortedGreater),
append(SortedLess,[Pivot|SortedGreater],Sorted).
split(_,[],[],[]).
split(Pivot,[X|T],[X|Less],Greater):-
X=<Pivot,split(Pivot,T,Less,Greater).
split(Pivot,[X|T],Less,[X|Greater]):-
X>Pivot,split(Pivot,T,Less,Greater).