西门子SCL编程实例——冒泡排序算法(更新版)

之前我曾写过一篇SCL冒泡排序算法的文章(西门子SCL语言编程实例——冒泡排序 | 北岛夜话),文中的算法在某些情况下会出现错误,原因是SCL语言的数组的上限和下限可以自由定义,这点与C/C++的不同。今天这篇文章,给大家介绍下更新版的冒泡排序算法,它不但适用于下限从0开始的数组,还适用于下限是负数或其它任意数的数组。

为了能支持上升沿信号检测,我不用之前的函数(FC),而是采用函数块(FB)来实现该算法。

在博途环境下新建函数块FB5011_BubleSort,声明变量如下图所示:

其中:

  • enable:使能排序算法(内部上升沿信号检测);
  • mode:排序的方式,0=升序,1=降序;
  • arraySort:变长数组,排序数据的来源;

代码如下:

使用之前文章介绍的生产随机数的函数初始化多个数组,然后使用该算法对数组中的元素进行排序,结果如下:

①数组arraySort的下限为1,上限为20,采用升序排序:

②数组arraySort2的下限为-2,上限为20,采用升序排序:

③数组arraySort3的下限为10,上限为30,采用降序排序:

④数组arraySort4的下限为0,上限为30,采用降序排序:

关于冒泡排序更新版就先介绍到这里,如果你有任何问题欢迎留言讨论。

我的书《西门子S7-1200/1500 PLC SCL语言编程》比较详细的介绍了SCL的编程,感兴趣的话可以看看下面的链接:

<script type="text/javascript" src="//mp.toutiao.com/mp/agw/mass_profit/pc_product_promotions_js?item_id=7120760836368384551"></script>

相关文章

C语言排序方法——冒泡排序详解!你学会了吗?

冒泡排序法的基本思路为:每次将相邻的两个数比较,将小的调在前面。举个例子,如果有6个数:9,8,5,4,2,0。第一次先将最前面的两个数9和8对调。第二次将第2个数和第3个数对调(9和5)······...

冒泡排序——C语言(冒泡排序c语言什么意思)

冒泡排序的图示:假设有一个数组 [5, 3, 8, 6, 2],逐步冒泡排序的过程:第一轮:比较 5 和 3,5 > 3,交换 → [3, 5, 8, 6, 2]比较 5 和 8,5 <...

基于C语言的冒泡排序法(c语言冒泡排序思路)

冒泡排序法:对数组中的n个整数类型的数据元素(a[0]~a[n-1])进行排序。void BubbleSort(int a[],int n){ int i,j,flag=1; int temp; fo...

一文透彻解析冒泡排序(冒泡排序有几种方法)

谈一谈冒泡排序看到很多人谈算法题,上来就是一段代码,你去看去吧,自己悟去吧。心塞有的题目老长时间就是不理解。。。本文分析一下啥是冒泡排序?排序就是一组数字,按照顺序排列(从小到大) ,冒泡排序是排序的...

常见的三种排序(冒泡排序、插入排序、选择排序)

冒泡排序什么是冒泡排序?百度百科解释:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要...

Python实现冒泡排序(python冒泡排序列表)

''' 冒泡排序原理:比较列表中相邻的两个元素大小,如果第2个元素比第1个元素大,就交换它俩的位置,从列表的开始到结尾, 依次对每一组相邻的2个元素都进行比较,这样最大的元素就...