Prolog语言中的冒泡排序

2023-12-20

我必须实现冒泡排序功能(排序算法)。

我已经实施了bubblesort and swap,一个帮助函数bubblesort:

swap([X,Y|T1],[Y,X|T1]):-(Y<X,!).
swap([X|T1],[X|T2]):- swap(T1,T2).

bubblesort([],[]) :- !.
bubblesort(T1,T2) :- (bubblesort(swap(T1,T2),T2)).

我得到一个无限循环。我必须保留函数的签名:

冒泡排序(T1,T2)

我在这个问题上纠结了2个小时。有谁知道我该怎么做?


直到交换过程没有变化为止,继续交换。如果交换没有变化,那么您已经对列表进行了排序。

bubblesort ( List, SortedList) :-
    swap ( List, List1 ), ! ,
    bubblesort ( List1, SortedList) .
bubblesort ( List, List).

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

Prolog语言中的冒泡排序 的相关文章

  • 在 Prolog、尾递归中计算斐波那契数列

    我想在 Prolog 中以递归尾部模式计算斐波那契数列 fibonacci 0 0 fibonacci 1 1 fibonacci N Result fibonacci N 1 0 fibonacci N Result Count Coun
  • Prolog 实现 and/2、or/2、nand/2、nor/2、xor/2 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在序言中实现以下谓词并将它们用于真值表 and 2 or 2 nand 2 nor 2 xor 2 也许有人可以告诉我如何实现和
  • Prolog 罗马数字(属性语法)

    我正在做一项作业prolog questions tagged prolog扫描数字列表并应返回该列表是否是有效的罗马数字以及数字的十进制值 前任 1 roman N I N 1 true 2 当我运行我认为应该工作的程序时 十进制值总是正
  • 适合从记录中提取 OneToMany 关系的约束编程

    也许有人可以帮助我解决 Prolog 或任何约束编程语言的问题 想象一个项目表 学生与母亲一起做某事的学校项目 每个项目都有一名或多名儿童参与 对于每个孩子 我们存储其姓名及其母亲的姓名 但对于每个项目 只有一个包含所有母亲的单元和一个包含
  • 导入 csv 文件数据以填充 Prolog 知识库

    我有一个 csv 文件example csv其中包含两列 标题为 var1 和 var2 我想填充一个最初为空的 Prolog 知识库文件import pl具有重复的事实 而每一行example csv处理方式相同 fact A1 A2 f
  • 在java中使用BUBBLE SORT对二维字符串数组进行排序

    类似的问题已经被问过 但从来没有关于二维字符串数组 因此在尝试了很长时间之后我找不到我想要的 我正在尝试使用 BubbleSort 对 java 中的 2D 字符串数组进行排序 作为输入 我收到一个二维字符串数组 一个表 以及您应该排序的
  • Prolog 展平列表

    flatten A B R islist A gt flatten A R1 R R1 write A append A R1 R flatten B R1 flatten X X islist 这是我写的代码 但我有奇怪的问题 I get
  • 在 SWI Prolog 中使用 process_create/3 使用命令提示符或 shell 时出错

    在 Windows 7 上 当我在 SWI Prolog 中使用 process create 3 打开 Notepad exe 等应用程序时 记事本将打开 但是 它不适用于使用命令提示符的应用程序 例如 当我尝试打开命令提示符窗口时 使用
  • Prolog家谱

    我做到了 但没有显示答案 当我询问兄弟姐妹 叔叔 阿姨时 这是我写的 有什么问题吗 uncle X Y male X sibling X Z parent Z Y uncle X Y male X spouse X W sibling W
  • 高阶“解决方案”谓词

    我正在使用一个更高阶的 Prolog 变体 它缺少findall 还有一个关于实现我们自己的问题findall here 获取 Prolog 中的解决方案列表 https stackoverflow com questions 419103
  • Prolog:如何在不重复的情况下创建所有可能的组合

    我正在尝试创建一个谓词来查找所有可能的组合而不重复相同的数字 我尝试使用排列谓词 但它发现了重复的列表 例如 permutation 0 1 1 L L 0 1 1 L 0 1 1 L 1 0 1 L 1 1 0 L 1 0 1 L 1 1
  • 序言中的“如果”?

    有没有办法在序言中执行 if 操作 例如如果变量为 0 则执行一些操作 将文本写入终端 甚至不需要 else 但我找不到 if 的任何文档 是的 ISO Prolog 中有这样一个控制结构 称为 gt 你像这样使用它 condition g
  • 如何使用append/3在prolog中递归构建列表?

    我需要了解一些事实的价值 这部分似乎正在发挥作用 fact1 A Val1 fact2 B Val2 A B 但是一旦我尝试附加这些值 Val1 Val2 通过使用append 3谓词到列表 OutList 我只得到一个可能的解决方案 而不
  • findall 的异常行为

    以下看起来很不寻常 findall X member X 1 2 3 X X 1 2 3 痕迹更是如此 trace findall X member X 1 2 3 X Call 11 findall 100058 member 10005
  • Prolog 谓词参数中实例化模式指示符的含义

    查看Prolog文档 谓词签名有时会写成如下 foo Bar Baz Qux Mop 什么是 and 我该如何解释它们 另外 这些是唯一存在的还是还有更多 在这种情况下 这些前缀运算符代表实例化模式 即它们告诉您哪些参数应该是变量或在调用谓
  • 下面代码中的修剪选择点如何使其更加高效(Prolog)?

    在下面给出的代码中 有 cut 修剪选择点以提高效率 我非常确定reverse谓词和agent do moves谓词是必不可少的 solve task Task Cost agent current position oscar P sol
  • Prolog 中的运算符 `-->` 有什么作用?

    什么是 gt Prolog 中的运算符做什么以及它和之间有什么区别 我正在使用 SWI Prolog 它用于定义 DCG Definite Clause Grammar 规则与普通谓词相反 看本教程 http www metalevel a
  • Prolog中统计一个列表中出现次数的方法

    我必须编写一种方法 可以计算一个列表在给定的另一个列表中出现的次数 例如 reps a b c a b c a b c 0 R R 2 no 我试图编码它 incr X X1 X1 is X 1 reps C D incr C D reps
  • Prolog:给定两个索引,创建子列表

    基本上 我需要创建 sublist S M N L 形式的谓词 其中 S 是由索引 M 和索引 N 之间 含 之间的 L 元素形成的新列表 这是我得到的 sublist sublist M N M gt N sublist S M N L
  • 在 Prolog 中比较两个原子

    我一直在学习序言 我正在使用名为 prol1 1 1 的编辑器 当我给出类似的内容时 我需要编写规则来比较 2 个字符串 rel a1 b1 rel a2 b2 rel b2 c2 associatedWith X Y Z rel X Y

随机推荐

  • 适用于 Mac 的二进制 Java 7

    是否有任何 Java 7 的二进制版本 使用 Mac BSD 端口项目 一些博客 例如在 Mac OS X 上构建 Java 7 http infernus org 2009 02 building java 7 on mac os x 有
  • System.currentTimeMillis 是否代表 UTC 时间?

    Does System currentTimeMillis 代表UTC时间还是本地系统时间 UTC 这是自 1970 年 1 月 1 日午夜以来 UTC 的毫秒数 可能是闰秒的模数 显然它依赖于本地系统clock 但它不依赖于本地系统时区
  • 浮动操作按钮下的 Admob

    我对浮动操作按钮的位置有疑问 当我从 Admob 投放广告时 fab 就结束了 我想将广告放在 fab 按钮下 但我尝试的任何方法都不起作用 当前位置风扇图像到广告 https i stack imgur com pM6s4 png 布局
  • 使用二等分来组合具有距离条件的项目

    在下面两个列表中 l1 10 33 50 67 l2 7 16 29 65 I use bisect组合两个列表中最接近的数字 我用这个代码 for s in l1 ind bisect l2 s hi len l2 1 ind abs l
  • 是什么导致 Jasper Reports 读取字体数据时抛出 java.io.IOException?

    我正在测试环境上运行一个进程 该进程需要 10 多个小时才能运行并使用 Jasper Reports v3 7 5 生成 PDF 文档 进程经常成功完成 但在某些情况下进程失败并抛出此异常 20 05 2017 02 45 23 503 E
  • 与XTR-DH Crypto++的密钥协议

    我尝试在此示例中应用 XTR DH 进行密钥协议 Alice Initialize the Diffie Hellman class with a random prime and base AutoSeededRandomPool rng
  • 如何实现索引核心风格的索引延续 monad

    我最近一直在研究 并试图理解 索 引单子 我想我已经了解了一种索引单子的风格 如下所述 无限邻域 超越单子 http blog sigfpe com 2009 02 beyond monads html 然而 我发现了一种不同风格的索引单子
  • verifyInputWhenFocusTarget 属性无效

    我正在尝试使用验证文本字段用户输入javax swing InputVerifier输入验证按预期工作 但我有一个问题VerifyInputWhenFocusTarget财产 我制作了一个标签来显示状态并被覆盖verify and shou
  • 如果 App_Data 不存在,如何让 msdeploy 创建它,但不删除远程目录的任何内容?

    我的应用程序设置具有以下打包 发布 Web 设置 仅运行此应用程序所需的文件 未选中 排除生成的调试符号 选中 从 App Data 文件夹中排除文件 选中 包括在 打包 发布 SQL 选项卡中配置的所有数据库 请注意我这样做not是否已配
  • 除了渲染向量之外,AS3 中的主要性能影响因素是什么?

    在 ActionScript 3 中 使用矢量图形肯定会对项目性能造成巨大损害 使用单个Bitmap对于所有图形使用 copyPixels http help adobe com en US FlashPlatform reference
  • java中数组是如何实现的?

    数组在java中是作为对象实现的 对吗 如果是这样 我在哪里可以查看数组类的源代码 我想知道数组中的长度变量是否被定义为常量 如果是的话 为什么它不是全部大写字母 LENGTH 以使代码更容易理解 尽管数组在继承 java lang Obj
  • 尝试提高数组中搜索的效率

    假设我有一个输入数组 其中所有对象都不相等 例如 13 2 36 我希望输出数组为 1 0 2 因为 13 大于 2 所以 1 2 大于没有元素 所以 0 36 大于 13 和 2 所以 2 如何以优于 O n2 的效率获得输出数组 编辑
  • 通过 jQuery 加载包含内联脚本的 HTML 内容

    的背景 我使用 Graffiti CMS 为当地的慈善 服务组织运行 ASP NET 网站 该组织的领导者希望开始集成第三方后端管理系统 将内容公开为完整的 HTML 页面 其中一个页面 军官列表 使用内联脚本加载图片或占位符 取决于是否有
  • Java:非堆内存分析

    我们遇到的问题是我们的非堆内存一直在增长 所以我们必须每三天重新启动我们的 jee java8 webapp 正如您在此处的屏幕截图中看到的那样 非堆内存和堆内存的屏幕截图 https i stack imgur com uhhte png
  • 如何在单击按钮后保持按钮按下状态? [复制]

    这个问题在这里已经有答案了 可能的重复 安卓 如何使按钮保持显示为 已按下 直到该按钮创建的操作完成为止 https stackoverflow com questions 4674940 android how do i keep a b
  • 带延迟运算符的单元测试 Observable

    我很难让我的单元测试与带有延迟运算符的 Observable 一起工作 该应用程序基于 Angular 2 构建 测试在 karma jasmine 中运行 我尝试过 async 和 fakeAsync 辅助方法 但它们都不起作用 这是一个
  • 如何从 Google Compute Engine 和本地验证 Google API(Google Drive API),而无需下载服务帐户凭据?

    我们公司正在处理来自 Google Cloud Platform 的 Google Sheets 在 Google Drive 内 的数据 但我们在身份验证方面遇到了一些问题 我们需要在两个不同的地方运行对 Google Drive 进行
  • 如何检测图像是否包含ASCII字符?

    我有一个图像数据集 我想过滤掉所有包含文本 ASCII 字符 的图像 例如 我有以下可爱的狗图片 正如您所看到的 右下角有一个文本 MAY 18 2003 因此应该将其过滤掉 经过一番研究 我发现了tesseract光学字符识别 在 pyt
  • 在c#中执行水晶报表时TLV记录无效

    我正在创建一个 C 程序 它将显示使用水晶报表创建的报表 我已经完成了报告 但是 当我尝试用 C 查看报告时 它提示我一个错误 无效的 TLV 记录 这可能是什么原因 请帮忙 谢谢 Code private void reportViewe
  • Prolog语言中的冒泡排序

    我必须实现冒泡排序功能 排序算法 我已经实施了bubblesort and swap 一个帮助函数bubblesort swap X Y T1 Y X T1 Y