prolog - 使用第二个元素作为枢轴的快速排序(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).
解决方案
推荐阅读
- reactjs - 我们什么时候应该使用 es6 格式在 react Typescript 中不使用 props 来创建组件?
- kubernetes - 使用 kops 创建 Kubernetes 集群失败
- javascript - 图像尺寸问题,宽度和高度不起作用
- android - Android Automotive types.hal 更改未自动生成
- java - EWS Java API 2.0 - 找不到自动发现服务
- python - 在 List Python 中查找位于特定字符串之间的字符串
- c# - 如何在 .NET Core Kestrel 中禁用 HTTP URL 方向
- user-interface - 在 Wxpython 中拖放图像
- reactjs - 阅读布局时,`useLayoutEffect` 是否优于`useEffect`?
- unity3d - 在由多个对撞机组成的飞机上修复鬼碰撞?