之前我曾写过一篇SCL冒泡排序算法的文章(),文中的算法在某些情况下会出现错误,原因是SCL语言的数组的上限和下限可以自由定义,这点与C/C 的不同。今天这篇文章,给大家介绍下更新版的冒泡排序算法,它不但适用于下限从0开始的数组,还适用于下限是负数或其它任意数的数组。
为了能支持上升沿信号检测,我不用之前的函数(FC),而是采用函数块(FB)来实现该算法。
在博途环境下新建函数块FB5011_BubleSort,声明变量如下图所示:
其中:
- enable:使能排序算法(内部上升沿信号检测);
- mode:排序的方式,0=升序,1=降序;
- arraySort:变长数组,排序数据的来源;
代码如下:
使用之前文章介绍的生产随机数的函数初始化多个数组,然后使用该算法对数组中的元素进行排序,结果如下:
①数组arraySort的下限为1,上限为20,采用升序排序: