首页 > 解决方案 > 使用第二个元素作为枢轴的快速排序(Prolog)

问题描述

我想在 Prolog 中使用列表的第二个元素作为枢轴来实现快速排序,但我不确定如何去做。有人告诉我,我可以将输入列表表示成对:[First | [枢轴| Tail]] 但我不确定如何使用它来帮助我。我是 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).

标签: prolog

解决方案


推荐阅读