codesys 实现冒泡排序
什么是冒泡排序冒泡排序的英文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 OF INT ; //表格数据
END_VAR以下就是冒泡排序的程序:
IF xButton0 THEN
FOR iSort_n := 0 TO 8 BY 1 DO
arrDim1 := arrDim1 ;
arrDim1 := arrDim1 ;
END_FOR
FOR iBubbleSort1 :=1 TO 8 BY 1 DO
FOR iBubbleSort2 :=0 TO (8-iBubbleSort1) BY 1 DO
IF arrDim1 > arrDim1 THEN //升序排列
iSortNum1 := arrDim1;
arrDim1 := arrDim1;
arrDim1 := iSortNum1;
END_IF
IF arrDim1 < arrDim1 THEN //降序排列
iSortNum1 := arrDim1;
arrDim1 := arrDim1;
arrDim1 := iSortNum1;
END_IF
END_FOR
END_FOR
xButton0 := 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 < num:
num,num = num,num
return num
if __name__ == "__main__":
num =
print("降序排列为:",bublle_sort(num)) 运行结果:
降序排列为: 怎么样,是不是感觉codesys也可以做些不一样的东西,在以后的日子我会持续和大家分享不一样的codesys,让我们工控人和可以玩转代码,下期我打算用codesys制作累加器!!
页:
[1]