易语言冒泡排序

article/2025/9/18 3:42:50

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,因此而得名。课程采用固定数组演示,然后封装模块的方式,有利于加深理解,包含了文本的冒泡排序,双向冒泡排序,汇编的冒泡排序。

算法描述

1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

511遇见

计次循环+变量循环

.版本 2
.支持库 spec.局部变量 A, 整数型, , "5"
.局部变量 i, 整数型
.局部变量 k, 整数型
.局部变量 temp
A = { 6, 8, 5, 7, 4 }
.计次循环首 (4, i).变量循环首 (4, i, -1, k)' 调试输出 (A [k]).如果真 (A [k + 1] < A [k])  ' 如果前一个数比后一个数大temp = A [k]  ' 把大的赋给临时变量tempA [k] = A [k + 1]  ' 交换两个数组成员的值,此时A[k]一定是最小的数,A [k + 1] = temp           .如果真结束.变量循环尾 ()
.计次循环尾 ()
调试输出 (A)

计次循环+计次循环

.版本 2
.支持库 spec.局部变量 a, 整数型, , "10"
.局部变量 n, 整数型
.局部变量 i, 整数型
.局部变量 t, 整数型' //冒泡排序,从小到大
a = { 89, 56, 34, 48, 57, 62, 74, 85, 93, 105 }
.变量循环首 (1, 10, 1, n).变量循环首 (1, 10 - n, 1, i).如果真 (a [i] < a [i + 1])  ' <从大到小,> 从小到大t = a [i]a [i] = a [i + 1]a [i + 1] = t.如果真结束.变量循环尾 ()
.变量循环尾 ()
调试输出 (a)
判断循环首 +变量循环首.版本 2
.支持库 spec.局部变量 比较次数
.局部变量 最后比较位置
.局部变量 n, 整数型
.局部变量 temp, 整数型
.局部变量 A, 整数型, , "0"A = { 6, 8, 5, 7, 4 }
比较次数 = 1
最后比较位置 = 取数组成员数 (A)
.判断循环首 (比较次数 > 0)比较次数 = 0.变量循环首 (1, 最后比较位置 - 1, 1, n).如果真 (A [n] > A [n + 1])temp = A [n]A [n] = A [n + 1]  ' 这3行代码是交换用的。A [n + 1] = temp最后比较位置 = n比较次数 = 比较次数 + 1.如果真结束.变量循环尾 ()
.判断循环尾 ()
调试输出 (A)

判断循环首 +计次循环

.版本 2
.支持库 spec.局部变量 成员数, 整数型
.局部变量 x, 整数型
.局部变量 i, 整数型
.局部变量 temp
.局部变量 A, 整数型, , "0"A = { 6, 8, 5, 7, 4 }
成员数 = 取数组成员数 (A)
x = 1
.判断循环首 (x > 0)  ' 开始进入冒泡过程x = 0  ' 初始化参数.计次循环首 (成员数, i)  ' 循环判断开始.如果真 (成员数 = i)  ' 设置跳出循环的条件跳出循环 ().如果真结束.如果真 (A [i] > A [i + 1])  ' 核心算法temp = A [i]  ' 比较两个相邻数据A [i] = A [i + 1]  ' 如果前大后小,那么互换A [i + 1] = temp  ' 如果前小后大,那么不管了x = x + 1  ' 如果有执行互换,则参数变动' 要一直执行到不用互换为止.如果真结束.计次循环尾 ()
.判断循环尾 ()
调试输出 (A)

冒泡排序模块封装

.版本 2.子程序 冒泡算法
.参数 数据数组, 整数型, 数组
.局部变量 比较次数
.局部变量 最后比较位置
.局部变量 变量, 整数型
.局部变量 交换变量, 整数型比较次数 = 1
最后比较位置 = 取数组成员数 (数据数组)
.判断循环首 (比较次数 > 0)比较次数 = 0.变量循环首 (1, 最后比较位置 - 1, 1, 变量).如果真 (数据数组 [变量] > 数据数组 [变量 + 1])交换变量 = 数据数组 [变量]数据数组 [变量] = 数据数组 [变量 + 1]  ' 这3行代码是交换用的。数据数组 [变量 + 1] = 交换变量最后比较位置 = 变量比较次数 = 比较次数 + 1.如果真结束.变量循环尾 ()
.判断循环尾 ()
冒泡排序优化.版本 2.子程序 冒泡法优化
.参数 参数组, 整数型, 数组
.局部变量 未比数据数量, 整数型
.局部变量 交换变量, 整数型
.局部变量 位置变量, 整数型
.局部变量 最后位置, 整数型未比数据数量 = 取数组成员数 (参数组)
.如果真 (未比数据数量 ≤ 0)返回 ()
.如果真结束
.判断循环首 (未比数据数量 > 0)最后位置 = 0.变量循环首 (1, 未比数据数量 - 1, 1, 位置变量).如果真 (参数组 [位置变量] > 参数组 [位置变量 + 1])  ' 前一个数大于后一个数,就将两数的位置交换交换变量 = 参数组 [位置变量]  ' 数据组可以是变量、文件、数据库(这里用的是变量)参数组 [位置变量] = 参数组 [位置变量 + 1]参数组 [位置变量 + 1] = 交换变量  ' 以上3行代码是交换用的最后位置 = 位置变量.如果真结束.变量循环尾 ()未比数据数量 = 最后位置  ' 下一行排序从第一个数开始到上次排序的最后被改变的位数
.判断循环尾 ()

文本冒泡排序

.版本 2.子程序 文本冒泡排序
.参数 数据数组, 文本型, 数组
.参数 由小到大, 逻辑型, 可空
.局部变量 未比数据数量, 整数型
.局部变量 交换变量, 文本型
.局部变量 位置变量, 整数型
.局部变量 最后位置, 整数型
.局部变量 互换标记, 逻辑型未比数据数量 = 取数组成员数 (数据数组)  ' 第一行排序比较所有数
.判断循环首 (未比数据数量 > 0)最后位置 = 0.变量循环首 (1, 未比数据数量 - 1, 1, 位置变量)互换标记 = 假.如果 (由小到大).如果真 (数据数组 [位置变量] > 数据数组 [位置变量 + 1])互换标记 = 真.如果真结束.否则.如果真 (数据数组 [位置变量] < 数据数组 [位置变量 + 1])互换标记 = 真.如果真结束.如果结束.如果真 (互换标记)交换变量 = 数据数组 [位置变量]  ' 数据组可以是变量、文件、数据库(这里用的是变量)数据数组 [位置变量] = 数据数组 [位置变量 + 1]数据数组 [位置变量 + 1] = 交换变量  ' 以上3行代码是交换用的最后位置 = 位置变量.如果真结束.变量循环尾 ()未比数据数量 = 最后位置  ' 下一行排序从第一个数开始到上次排序的最后被改变的位数
.判断循环尾 ()

双向冒泡排序

.版本 2
.子程序 双向冒泡排序
.参数 参数组, 整数型, 数组
.局部变量 交换, 整数型
.局部变量 交换变量, 整数型
.局部变量 位置变量, 整数型
.局部变量 起始变量, 整数型
.局部变量 目标变量, 整数型
.局部变量 方向变量, 整数型目标变量 = 取数组成员数 (参数组) - 1
.如果真 (目标变量 ≤ 0)
返回 ()
.如果真结束
方向变量 = 1
起始变量 = 1
.判断循环首 (交换 = 0)
交换 = 1
.变量循环首 (起始变量, 目标变量, 方向变量, 位置变量)
.如果 (参数组 [位置变量] > 参数组 [位置变量 + 1])
交换变量 = 参数组 [位置变量]
参数组 [位置变量] = 参数组 [位置变量 + 1]
参数组 [位置变量 + 1] = 交换变量
交换变量 = 位置变量
交换 = 0
.否则
.如果结束
.变量循环尾 ()
方向变量 = 方向变量 × -1
交换变量 = 交换变量 + 方向变量
目标变量 = 起始变量
起始变量 = 交换变量
.判断循环尾 ()

汇编法冒泡排序

.版本 2.子程序 BubbleSort, 整数型,
.参数 array, 整数型, , 数组指针
.参数 len, 整数型, , 数组长度置入代码 ({ 131, 236, 12, 86, 131, 125, 12, 0, 117, 8, 139, 69, 8, 233, 130, 0, 0, 0, 199, 69, 252, 0, 0, 0, 0, 235, 9, 139, 69, 252, 131, 192, 1, 137, 69, 252, 139, 77, 252, 59, 77, 12, 125, 101, 199, 69, 248, 0, 0, 0, 0, 235, 9, 139, 85, 248, 131, 194, 1, 137, 85, 248, 139, 69, 12, 131, 232, 1, 43, 69, 252, 57, 69, 248, 125, 67, 139, 77, 248, 139, 85, 8, 139, 69, 248, 139, 117, 8, 139, 76, 138, 4, 59, 12, 134, 125, 44, 139, 85, 248, 139, 69, 8, 139, 76, 144, 4, 137, 77, 244, 139, 85, 248, 139, 69, 8, 139, 77, 248, 139, 117, 8, 139, 12, 142, 137, 76, 144, 4, 139, 85, 248, 139, 69, 8, 139, 77, 244, 137, 12, 144, 235, 166, 235, 138, 139, 69, 8, 94, 139, 229, 93, 194, 8, 0 })
返回 (0).版本 2
.支持库 spec.子程序 汇编冒泡排序
.参数 iarray, 整数型, 数组
.参数 retarray, 整数型, 参考 数组
.局部变量 len, 整数型
.局部变量 plr, 整数型
.局部变量 arrBuf, 字节集len = 取数组成员数 (iarray)
plr = BubbleSort (取变量数据地址 (iarray), len)
arrBuf = 指针到字节集 (plr, len × 4)
重定义数组 (retarray, 假, len)
RtlMoveMemory_arrn (retarray, arrBuf, len × 4)

源码:http://www.511yj.com/eyuyan-px-1.html


http://chatgpt.dhexx.cn/article/GPaNDfum.shtml

相关文章

实现冒泡排序函数

#1 冒泡排序思想 假设我们现在又是个乱序的数字&#xff0c;10 2 3 4 1 6 8 5 9 7&#xff0c;要对这十个数字进行升序排序&#xff08;越往右数字越大&#xff09;&#xff0c;我们可以这样子做&#xff1a; 取出最左边的数字&#xff08;10&#xff09;&#xff0c;然后依次…

用汇编实现冒泡排序

对应的C语言代码如下&#xff1a; int number[6]{12,3,2,5,6,7}; for(int i0;i<6;i) {for(int j0;j<6;j) {if(a[i]<a[j]) {int tempa[i];a[i]a[j];a[j]temp;}} } 汇编代码&#xff08;从大到小排列&#xff09;&#xff1a; DATA SEGMENTBUF DB 12,3,2,5,6,7 …

c语言冒泡排序while循环,冒泡排序算法,C语言冒泡排序算法详解

冒泡排序是最简单的排序方法&#xff0c;理解起来容易。虽然它的计算步骤比较多&#xff0c;不是最快的&#xff0c;但它是最基本的&#xff0c;初学者一定要掌握。 冒泡排序的原理是&#xff1a;从左到右&#xff0c;相邻元素进行比较。每次比较一轮&#xff0c;就会找到序列中…

冒泡排序与qsort函数详解

提及到排序&#xff0c;冒泡排序算是一个很基础的排序了。那么冒泡排序到底是什么呢&#xff1f;冒泡排序在什么情况下使用呢&#xff1f;qsort函数又是什么呢&#xff1f;接下来我给大家通过举例来详细解释一下。 引入 这里给大家一个题目&#xff0c;大家可以简单思考一下&am…

模仿qsort功能实现一个冒泡排序

目录 1.简单介绍qsort 2.模仿qsort实现冒泡排序 qsort函数原型 void qsort (void* base, size_t num, size_t size,int (*compar)(const void*,const void*)); 一些解释: 1.base:指向要排序数组的第一个对象 类型为void* 2.num:base所指向数组的元素总数…

字符串的冒泡排序

字符串的冒泡排序 本题要求使用冒泡排序法对任意给定的N个字符串按从小到大排序&#xff0c;输出扫描完第K&#xff08;K<N&#xff09;遍后的中间结果序列。 输入格式&#xff1a; 输入在第1行中给出N和K&#xff08;1≤K<N≤100&#xff09;&#xff0c;此后N行&…

冒泡排序(C语言)

文章目录 1. 冒泡排序如何实现1.1 冒泡排序函数的错误设计1.2 数组名是什么&#xff1f;1.3 冒泡排序函数的正确设计 1. 冒泡排序如何实现 往往我们在写代码的时候&#xff0c;会将数组作为参数传个函数&#xff0c;比如&#xff1a;我要实现一个冒泡排序&#xff08;这里要讲算…

模仿qsort实现一个冒泡排序的通用算法

&#x1f4a5;qsort函数介绍&#x1f4a5;冒泡排序介绍&#x1f4a5;什么是冒泡排序的通用算法&#x1f4a5;模仿qsort的一个冒泡排序的通用算法&#x1f4a5;结语 &#x1f525;qsort函数介绍 在一些编程题中经常需要你按照某个指标按照从小到大或从大到小输出一些数据&#x…

c语言冒泡排序数组指针,c语言冒泡排序,指针,数组

冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面…

汇编——实现冒泡排序+讲解

题目描述&代码 有一个首地址为A的N字数组&#xff0c;编写程序采用冒泡排序使该数组中的数按照从大到小的次序整序。 数据存储在A的数组中&#xff08;即内存中&#xff09;&#xff0c;我们需要利用冒泡排序实现从大到小排序。 ;description data SEGMENT USE16a dw …

实现一个通用的冒泡排序 - C语言

一、前言 在对一组数组进行排序是&#xff0c;我们经常用到冒泡排序&#xff0c;它是一种较简单的排序算法。 冒泡排序的原理如下&#xff1a; 比较相邻的两个元素。如果第一个比第二个大&#xff0c;就交换它们两个。对每一对相邻元素做同样的工作&#xff0c;从开始第一对到…

第三次项目需求文档

北京理工大学大学疫苗接种系统 文章目录 一.UML图1.用例图2.类图3.活动图4.顺序图 二.需求规格说明文档1.需求和功能说明1.1.获取的功能需求.2.功能划分1.2.1.登录界面1.2.2.预约服务1.2.3.接种查询 2.工作量展示2.1.需求获取2.1.1.项目前景和范围2.1.2.涉众分析2.1.4.面谈 2.…

项目文档编写规范

此文件是 项目文档编写规范 的 readme 编写范例&#xff0c;点击 我要改进 即可查看其 Markdown 内容。 项目概述 产品名称&#xff1a;LaraBBS 项目代号&#xff1a;larabbs 官方地址&#xff1a; https://learnku.com/laravel/t/6592 LaraBBS 是一个简洁的论坛应用…

项目文档管理

项目文档管理&#xff08;Project Documents Management&#xff09; 目录 [隐藏 ] 1 项目文档管理的概述 2 文档管理在项目进程中的重要作用 3 如何建立项目文档管理规定 4 参考文献 <script type"text/javascript"> if (window.showTocToggle) { var …

项目文档如何管理?

在项目进行过程中&#xff0c;会产生很多相关文档文件。通常会散落的分布在不同员工的设备中以及聊天记录中&#xff0c;这种管理方式不仅增大了文件丢失的风险&#xff0c;而且不利于团队文件协作&#xff0c;以及项目经验知识沉淀。 项目文件的管理是项目管理中不可缺少的一…

项目部署文档

1.前提环境 名称版本jdkjdk1.7(建议不要超过1.8)mysql5.7tomcat7(建议不要超过8) 输入 java -version出现如下为jdk安装成功 2.Java环境安装与配置 参见&#xff1a;https://www.linuxidc.com/Linux/2017-01/139212.htm 3.Tomcat安装部署说明 以使用提供的tomcat为例tar z…

如何写项目文档?项目文档有哪些?

软件新人经常问我一个项目应该到底有哪些文档&#xff0c;在此结合工作实际把我一般形成的文档作一列表&#xff0c;仅供诸位参考。 一、项目立项建议书 项目立项建议书主要用于分析项目要求与各种资源是否能够匹配&#xff0c;用来决策层决定是否最终立项。 主要要素包括&…

synplify成功运行起designware的方法,巨坑

因为手头FPGA是zynq ultrascale。所以更新了synplify到2019版本。手里的项目必须要用designware来做验证。各种研究&#xff0c;填了N多的坑。终于搞定。 先说原理&#xff1a; 1. 电脑上有design compile&#xff0c;license各种都搞定&#xff0c;dw库可用。可以装在虚拟机…

VIVADO2018与SYNPLIFY联合使用

VIVADO2018与SYNPLIFY联合使用 1、synplify生成网表文件.edf ①新建工程&#xff0c;设置所选的FPGA型号。 ②添加源文件&#xff0c;可以源文件&#xff0c;也可以是包括很多源文件的文件列表&#xff08;.v/.sv&#xff09;。 ③根据需要添加约束文件.fdc。 ④点击RUN生成网…

ModelSim,synplify,ISE后仿真流程

首先&#xff0c;我把我用到的软件说明一下。如果你发现根据我的操作&#xff0c;你还是解决不了ModelSim后仿真的问题&#xff0c;那就可能是软件版本的问题。 1&#xff0c; ModelSim Se 6.1b 2&#xff0c; Synplify Pro 7.5.1 3&#xff0c; ISE 5.2i &#xff08;这个…