使用第二个元素作为枢轴进行快速排序(Prolog)

时间:2019-12-01 04:02:22

标签: prolog

我想以列表的第二个元素为基础在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).

0 个答案:

没有答案