什么是冒泡排序

冒泡排序的英文Bubble Sort,是一种最基础的交换排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。

冒泡排序的原理:    

        每一趟只能确定将一个数归位。即第一趟只能确定将末位上的数归位,第二趟只能将倒数第 2 位上的数归位,依次类推下去。如果有 n 个数进行排序,只需将 n-1 个数归位,也就是要进行 n-1 趟操作。而 “每一趟 ” 都需要从第一位开始进行相邻的两个数的比较,将较大的数放后面,比较完毕之后向后挪一位继续比较下面两个相邻的两个数大小关系,重复此步骤,直到最后一个还没归位的数。

具体是如何移动的呢?这里参考了(帅地的冒泡排序)

(1)起始时,左下标指向第一个石子,右下标指向第二个石子,然后比较

(2)然后左右下标同时向右移动,再次比较

(3)第一趟结束之后,最大的石子就移动到了最右边

(4)接下来就从剩下 3 个没排好序的石子中继续选出最大的,规则和上面一样

(5)下面给出这 4 个石子完整的演示过程

话不多说,上带代码:

首先就是定义变量:

PROGRAM PLC_PRG
VAR//冒泡排序法xButton0                      : BOOL ;    //排序开始按钮iBubbleSort1,iBubbleSort2   : INT ;     //冒泡循环参数iSort_n,iSortNum1,iSortNum2 : INT ;     //排序辅助参数arrDim1 : ARRAY[0..2,0..8] OF INT ; //表格数据
END_VAR

以下就是冒泡排序的程序:

IF xButton0 THENFOR iSort_n := 0 TO 8 BY 1 DO arrDim1[1,iSort_n] := arrDim1[0,iSort_n] ;arrDim1[2,iSort_n] := arrDim1[0,iSort_n] ;END_FORFOR iBubbleSort1 :=1 TO 8 BY 1 DO FOR iBubbleSort2 :=0 TO (8-iBubbleSort1) BY 1 DO IF arrDim1[1,iBubbleSort2] > arrDim1[1,iBubbleSort2+1] THEN //升序排列iSortNum1 := arrDim1[1,iBubbleSort2];arrDim1[1,iBubbleSort2] := arrDim1[1,iBubbleSort2+1];arrDim1[1,iBubbleSort2+1] := iSortNum1;END_IFIF arrDim1[2,iBubbleSort2] < arrDim1[2,iBubbleSort2+1] THEN //降序排列iSortNum1 := arrDim1[2,iBubbleSort2];arrDim1[2,iBubbleSort2] := arrDim1[2,iBubbleSort2+1];arrDim1[2,iBubbleSort2+1] := iSortNum1;END_IFEND_FOREND_FORxButton0 := 0;
END_IF

通过一个按钮执行程序,实现数字的排序,制作一个可视化文件,这样就可以实现了:

来执行以下吧,请看运行后的效果:

运行后实现了数字的升序和降序排列————

同样还有Python的冒泡排序的程序:

def bublle_sort(num):for i in range(1,len(num)):for n in range(0,len(num)-1):if num[n] < num[n+1]:num[n],num[n+1] = num[n+1],num[n]      return numif __name__ == "__main__":num = [1,3,2,8,4,6]print("降序排列为:",bublle_sort(num))

运行结果:

降序排列为: [8, 6, 4, 3, 2, 1]

怎么样,是不是感觉codesys也可以做些不一样的东西,在以后的日子我会持续和大家分享不一样的codesys,让我们工控人和可以玩转代码,下期我打算用codesys制作累加器!!

codesys 实现冒泡排序相关推荐

  1. PHP算法题:如何实现冒泡排序

    算法原理: 1.比较相邻的元素,如果第一个比第二个大,那么就交换这两个元素. 2.对每一对相邻元素做同样的工作,从第一对开始到最后一对结束,最后的元素应该会是最大的数. 3.除了最后一个元素外,针对其 ...

  2. C#基础——数组(冒泡排序)

    数组 所谓数组,就是相同数据类型的元素按一定的顺序的集合,就是把有限个类型相同的变量用一个名字来命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组的各个变量称为数组的分量 ...

  3. python实现冒泡排序完整算法_Python实现冒泡排序算法的完整实例

    冒泡排序:顾名思义就是(较小的值)像泡泡一样往上冒,(大的值)往下沉. 实现原理:依次将相邻两个数值进行比较,较小的数值移到左边,较大的数值移到右边,依次比较完第一轮后,最大的数值应该排在最右边.然后 ...

  4. 为什么双层循环 冒泡排序_冒泡排序的双重循环理解

    主要说一下冒泡排序的一些关键地方的个人理解,比如算法思想,两个循环的作用意义,中间循环变量范围的确定等. 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面 ...

  5. 排序 时间倒序_经典排序算法之冒泡排序(Bubble Sort)

    冒泡排序 ( Bubble Sort ) 冒泡排序,正如它的名字一样,未排序数组中的最大(小)值会依次往上浮.冒泡排序主要有两个基本步骤:相邻元素之间的比较 和 交换位置. 步骤分析: 令待排序序列为 ...

  6. Equalizing Two Strings 冒泡排序or树状数组

    首先考虑排序后相等 如果排序后相等的话就只考虑reverse长度为2的,所以a或者b排序后存在相邻两个字母相等的话就puts YES,n>26也直接puts YES 不然的话就假设c为a,b排完 ...

  7. java冒泡排序_Java中的经典算法之冒泡排序(Bubble Sort)

    原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将 ...

  8. python冒泡排序与常用数学计算

    一 .冒泡排序: 冒泡排序: 属于交换排序; 两两比较大小,交换位置,如同水泡大的往上(右)跑; n个数从左至右编号从0到n-1,索引0和1比较,如果索引0大,则交换两者位置; 如果索引1大则不用交换 ...

  9. Console-算法-冒泡排序法|倒水法

    ylbtech-Arithmetic:Console-算法-冒泡排序法|倒水法 1.A,案例 -- ================================================== ...

  10. java 冒泡排序和快速排序 实现

    面试的时候经常会遇到面试官让你直接手写排序算法,下面是冒泡排序和快速排序的实现. 冒泡排序 基本流程就是,自下而上比较相邻的两个元素进行比较,让大的元素往下面沉,较小的往上冒.按照排序规则进行比较,如 ...

最新文章

  1. 前端学PHP之文件操作
  2. Flume sink=avro rpc connection error
  3. 【2019牛客暑期多校训练营(第五场)- E】independent set 1(最大独立集,状压dp)
  4. 诗与远方:无题(八十三)- 雪国冷天,心死随魂
  5. 学phython的小笔记
  6. 5大领先的商业智能解决方案,国产上榜!
  7. Cocos2d-x特殊节点对象(瓦片地图、粒子系统、视差滚动)概述
  8. github上优秀的源码
  9. 迈迪 由于目标计算机积极拒绝,adb“由于目标计算机积极拒绝,无法连接”的解决方案...
  10. 448. Find All Numbers Disappeared in an Array
  11. 传奇世界开服教程-地图编号与小地图编号查找方法
  12. 自下而上合并排序算法
  13. web自动化测试-第五讲: 三大切换
  14. has leaked IntentReceiver ...that was originally registerd here.Are you missing a call to unregister
  15. ti ds90ub953 与ds90ub954 、ds90ub933的调试总结
  16. 孙武被任命为凯悦与首旅如家合资公司CEO及董事总经理
  17. hexo+github打造个人博客系列之Coding Pages去广告
  18. 大图数据管理与分析技术(综述)
  19. Linux以太网卡软硬件架构
  20. java面试基础复习----基础的基础(1)

热门文章

  1. android支持u盘格式文件,安卓系统OTG支持U盘格式
  2. 三星手机GT-S7898连不上电脑,无法调试
  3. 压缩文件密码暴力破解——cRARk使用方法
  4. SolidWorks零件改名后与工程图关联教程
  5. xmta温度控制仪说明书_XMT温度控制仪说明书
  6. 防火墙的数据包拦截方式
  7. 格局打开:NFT持有者决定IP天花板
  8. 清华紫光输入法linux,清华紫光拼音输入法
  9. 富其云ERP学习笔记
  10. Javascript保存网页为图片