prolog - 使用最大值进行选择排序
问题描述
我正在尝试通过选择未排序部分的最大值并将其放在输出(排序)列表的末尾来实现自定义版本的选择排序。我对列表递归构建有疑问。如何从右侧开始构建输出列表?
sel_sort2([], []).
sel_sort2(L, R) :-
max_list(L, M),
delete1(M, L, L1),
append(R, [M], R),
sel_sort2(L1, R).
解决方案
您不需要使用append
(正如第一条评论中指出的那样是可疑的)。相反,您可以编写第二个子句,例如:
sel_sort2(L, [E|T]) :-
min(L, E),
del(L, E, L1),
sel_sort2(L1, T).
wheremin
取输入列表中的最小元素,并且该元素位于结果列表中的第一个位置,L1 是 L 中没有第一次出现给定元素的所有元素。
推荐阅读
- javascript - 输入文本框“on the fly”过滤列表
- go - 如何使用 ListenTCP 收听 0.0.0.0:8080
- batch-file - 编辑脚本以便它只为存在的文件创建快捷方式?
- r - 如何更改 R 中空白的千位分隔符?
- r - 如何在 R 中使用特定颜色来组合绘图可视化?
- python-3.x - 运行 model_main_tf2.py 和 exporter_main_v2.py 后模型没有导出。不知道为什么?
- r - Shiny中的表格输出问题
- git - 如果我在提交后进行拉取,为什么 SourceTree 中的单个提交的 git 推送通知数量会增加
- spring-boot - 有什么方法可以确定 kuberbetes 服务发现中的当前服务 instance_id 吗?
- python - 如何总结数字的位数?