Prolog插入排序

2023-12-11

有一个简单的Prolog插入排序算法:

sorting([A|B], Sorted) :- sorting(B, SortedTail), insert(A, SortedTail, Sorted).
sorting([], []).

insert(A, [B|C], [B|D]) :- A @> B, !, insert(A, C, D).
insert(A, C, [A|C]).

它在普通列表上表现良好:

?- sorting([5, 4, 9, 1, 3, 8], X).
X = [1, 3, 4, 5, 8, 9].

但我还需要对包含其中任何一个的列表的子列表进行排序:

?- sorting([2, 5, [5, 4, 3], [6, 3], 4, 8], X).
X = [2, 4, 5, 8, [5, 4, 3], [6, 3]].

就是现在返回的。和

?- sorting([2, 5, [5, 4, 3], [6, 3], 4, 8], X).
X = [2, 4, 5, 8, [3, 4, 5], [3, 6]].

我需要返回什么。那么我怎样才能对子列表进行排序呢?提前致谢!


我提供这个简单的解决方案:

在已排序的列表中插入元素

insert(X, [], [X]):- !.
insert(X, [X1|L1], [X, X1|L1]):- X=<X1, !.
insert(X, [X1|L1], [X1|L]):- insert(X, L1, L).

使用插入排序算法原理

insertionSort([], []):- !.
insertionSort([X|L], S):- insertionSort(L, S1), insert(X, S1, S).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Prolog插入排序 的相关文章

  • 如何从列表类别中对 pandas 数据框进行排序?

    所以我在下面有这个数据集 我想根据我的列表从 名称 列进行排序 以及按 A 升序和按 B 降序排序 import pandas as pd import numpy as np df1 pd DataFrame from items A 1
  • 维护/更新mysql中的记录顺序

    我在 mySql 中有一个记录表 我需要按照用户指定的方式维护它们的订单 所以我添加了一个 位置 列 当我移动特定记录时更新所有记录的 SQL 语句是什么 我有类似的东西 UPDATE items SET position 2 WHERE
  • 计算数组中的唯一元素而不排序

    在 JavaScript 中 以下代码将查找数组中的元素数量 假设数组中至少有一个元素 arr jam beef cream jam arr sort var count 1 var results for var i 0 i lt arr
  • 使用布尔值进行冒泡排序以确定数组是否已排序

    我有以下用于冒泡排序的代码 但它根本不排序 如果我删除布尔值那么它工作正常 我知道 由于我的 a 0 小于所有其他元素 因此没有执行交换 任何人都可以帮助我解决这个问题 package com sample public class Bub
  • 我应该在 Prolog 和一般情况下避免尾递归吗?

    我正在阅读 立即学习 Prolog 在线书籍 以获取乐趣 我正在尝试编写一个谓词 该谓词遍历列表的每个成员并向其添加一个 使用累加器 我已经在没有尾递归的情况下轻松完成了 addone addone X Xs Y Ys Y is X 1 a
  • 有没有时间复杂度为O(N)的排序算法?

    大多数排序算法的复杂度为 O NN 或 O NlogN 来实现结果 但是 对于特定的输入集 有些算法的复杂度为 O N 我想知道是否有一种排序算法在所有情况下都具有 O N 的复杂度 如果您只能比较 检查两个项目是否为 正在排序的值 那么您
  • Python排序算法[重复]

    这个问题在这里已经有答案了 我在Python中实现了不同的排序算法 以更好地理解它们 我想知道Python的内置排序方法实现什么类型的排序 这是一个叫做Timsort http en wikipedia org wiki Timsort由
  • 如何重载比较器以使用 UTF-8 和不同区域设置进行排序

    我有一个数据集合 Alphabet Zend wiczenia 结果collection sort I get Alphabet Zend wiczenia 如何超载comparator使用 UTF 8 和不同的语言环境进行排序 你需要设置
  • Java:不使用 Arrays.sort() 对整数数组进行排序

    这是我们 Java 课程的练习之一中的说明 首先 我想说我 做了我的功课 我不仅仅是懒惰地请 Stack Overflow 上的人帮我回答这个问题 在所有其他练习中 这个特定项目一直是我的问题 因为我一直在努力寻找 完美的算法 编写JAVA
  • Excel 公式从单元格中获取字符串值并按字母顺序对其字符进行排序

    你能帮我制作一个 Excel 公式 从单元格中获取字符串值并按字母顺序对其字符进行排序吗 Ex 原始单元格值 BACR 已排序的字符单元格 ABCR 编辑 2022 年 4 月 29 日 随着 Office 365 Excel 中引入的动态
  • 按工作日对 pandas 数据框进行排序

    如何按工作日名称对 DataFrame 进行排序 我无法使用 pd to datetime 方法 因为我的日期不是数字 Date Transactions 0 Friday 140 652174 1 Monday 114 000000 2
  • 如何自定义 DataTable 列的排序

    我需要对数据表列的值进行排序 该列包含字符串 整数或混合文本 例如 数据表列包含如下值 23 18 12 store 23 store a1 1283 25 如果我使用对值进行排序Dataview sort 方法会按此顺序产生 12 128
  • 根据另一个列表的顺序对列表进行排序[重复]

    这个问题在这里已经有答案了 我需要对列表进行排序Person对象 List
  • 如何在 ISO Prolog 中定义(和命名)相应的安全术语比较谓词?

    标准术语顺序 ISO IEC 13211 1 7 2 术语顺序 针对所有术语 包括变量 进行定义 虽然这有很好的用途 想想实施setof 3 这使得 8 4 术语比较中内置函数的许多其他干净且合乎逻辑的使用成为声明式噩梦 到处都是 imps
  • SWI-Prolog 中的跨模块“接口”调用

    这可能是 SWI Prolog 模块系统特有的 假设我们有三个 Prolog 模块 在 SWI Prolog 模块系统中 robin 在文件中robin pl arthur 在文件中arthur pl helper 在文件中helper p
  • Java 8 流过滤器 - 基于排序的更新

    我正在尝试对过滤器中的字段进行排序 输入文件 样本记录 DocumentList Document id 5975ff00a213745b5e1a8ed9 u id mailboxcontent id 5975ff00a213745b5e1
  • DataGridView小数不排序

    好吧 我有一个 DataGridView 它的数据绑定如下 dataGridViewChartOre AutoGenerateColumns false dataGridViewChartOre DataSource xml GetOreC
  • 一次性删除不正确的后续解决方案

    我有一个谓词 它找到正确的解决方案 但随后又找到不正确的解决方案 data D data threshold nonredundantbumps D 5 Bs write D 3 6 7 8 2 4 5 6 9 4 7 3 D 3 6 7
  • 按绝对值排序

    有谁知道如何按绝对值对 R 中的向量进行排序 所以 2 3 1 gt 1 2 3 etc 如果我在 python 中这样做 我会创建一对每个值及其符号 按绝对值对对列表进行排序 然后重新应用符号 但我对 R 很陌生 所以不知道如何执行此操作
  • Prolog中计算数字是否为素数

    我正在尝试计算输入是否是素数 但出了问题 这是我的代码 primeNumber X prime prime A 1 prime prime A B R is A mod B R 1 R A prime prime X B B lt A Ne

随机推荐

  • 时间戳/日期作为 cassandra 列族/hector 的关键

    我必须创建并查询一个复合键为 timestamp long 的列族 还 查询时我想触发时间戳范围查询 例如 xxx 和 yyy 之间的时间戳 这可能吗 目前我正在做一些非常有趣的事情 我知道这是不正确的 我为给定范围创建带有时间戳字符串的键
  • Codeigniter simple_query 与查询生成器(插入、更新和删除)

    根据文档 simple query不会返回任何数据库结果集 也不会设置查询计时器 或编译绑定数据 或存储查询以进行调试 正如在我的 CodeIgniter 中一样 我使用 CI 提供的查询生成器来生成查询 那么 这些用于插入 更新和删除的查
  • 从非 UI 线程弹出对话框

    我正在开发一个面向团体的网络应用程序 问题是 当我要加入一个组时 它首先检查该组是否安全 如果是 它会要求输入用户名和密码 获得组安全性可能需要几秒钟 因此我为整个过程生成一个新线程 我想弹出一个对话框 以防该组需要安全性 我认为这可能与后
  • 在 C++ 中处理巨大的多维数组

    我正在用 C 设计一款类似于 Minecraft 的游戏 它在内存中保存了大量的地形数据 一般来说 我想在内存中存储一 个数组 即 5 4 5 50 50 50 这还不错 因为它相当于大约 100mb 的虚拟内存 而我的结构只有大约 8 个
  • 为什么重新分配后变量的类型再次变为“未知”

    Why value属于类型unknown分配后再次string to it TypeScript Playground 中的示例 function example boolean let value unknown something ma
  • 如何更改 WooCommerce 订阅中的价格字符串

    我需要一个更好的方法来做到这一点 目前 我已将代码直接添加到 class wc subscriptions product php 文件中的 get price string 函数中 因此当设置免费试用版时 我可以更改添加到价格字符串中的文
  • 为什么“边框颜色”被“颜色”覆盖?

    我有以下CSS isActiveFilter color black background color rgba 0 184 170 5 padding 15px 10px 10px 10px border color red border
  • 检测 UIPopoverController 何时完成呈现 UIImageViewcontroller

    我将 UIImagePickerController 作为 UIPopoverController 的内容视图控制器 我需要检测弹出窗口何时刚刚完成呈现 刚刚出现 UIPopoverController 没有任何委托 我似乎也找不到检测 U
  • 如何让 Geolocation API 在 Dartium 中工作?

    我正在尝试使用 Geolocation API 在 Dartium 浏览器中进行测试 我特别尝试执行以下操作 window navigator geolocation getCurrentPosition then pos window a
  • python 使用字符串列表创建字典,并将字符串长度作为值

    我确信这是可以做到的 但到目前为止我还没有成功 我有一个字符串列表 我想创建一个字典 其中所述字符串的长度 可以表示为范围 作为键 字符串本身作为值 例子 这是类似我的列表 foo bar help this guy 我想最终得到一本这样的
  • 如何找到 PHP 项目中未使用的函数

    如何找到 PHP 项目中未使用的函数 PHP 中是否有内置的功能或 API 可以让我分析我的代码库 例如反射 token get all 这些 API 的功能是否足够丰富 让我不必依赖第三方工具来执行此类分析 您可以尝试 Sebastian
  • C# 列格式设置

    我正在尝试将一些输出格式化到控制台 但解决方案存在一些问题 我在 C 中执行此操作 但每次调用 Console Write 时 它 都会将整个内容打印到控制台的最后 然后开始一个新行 所以我想做的是将其调整为四列 然后在那里开始一个新行 以
  • 返回指针后删除堆

    我有一个如下的功能 int readFile string InputPath int myvar new int 10 The file has 10 lines Using heap ifstream inFile inFile ope
  • 带有参数的 Facebook 帖子

    我需要在 Facebook 上发布带有参数的帖子 我使用了这里的解决方案 动态生成 Facebook Open Graph 元标签和这里 WordPress PHP 中的动态 Facebook 和元标签 最终工作代码
  • 使用 WatiN 进行自动完成下拉菜单测试

    我正在使用 WatiN 来测试自动完成下拉列表 当用户在输入 3 个字符后在字段中键入时 将触发 jquery 自动完成并显示无序列表 用户必须从列表中进行选择 我无法使用 WatiN 从列表中进行选择 触发自动完成 以下是开发人员使用的一
  • ASP.NET Ajax 客户端框架无法加载。当将 ScriptManager 放在空白页上时

    我有一个错误Microsoft JScript 运行时错误 ASP NET Ajax 客户端框架无法加载 使用母版页在空白页上
  • GGplot2 中面板背景的条件格式

    我想知道是否有一种 直接 方式将 ggplot 分面面板中回归线的斜率链接到该面板的背景颜色 即在视觉上将大网格中的正斜率与负斜率分开 我了解如何在 GGplots 中添加回归线 正如上所解释的那样使用 R 中的 qplot 将回归线添加到
  • 使用 simpledateformat 将日期转换为字符串

    我在将日期转换为不同格式的字符串时遇到问题 日期 lastDownloadDate gt gt Wed Feb 27 16 20 23 IST 2013 lastChangeDate gt gt Wed Feb 27 15 11 00 IS
  • 在 ckeditor5 下拉项上注册点击侦听器

    我目前正在尝试编写一个插件CK编辑器5支持自动翻译 我发现如何编写插件以及如何在文档中创建下拉菜单 但在文档中没有提及 或者我错过了 如何获知有关单击值的信息 打开下拉列表的按钮有一个执行处理程序 但如何注册一个监听器来单击其中一个值 我可
  • Prolog插入排序

    有一个简单的Prolog插入排序算法 sorting A B Sorted sorting B SortedTail insert A SortedTail Sorted sorting insert A B C B D A gt B in