【导读】通过冒泡法升序或降序模式排序数组。该例程已在博途V15.1环境下测试通过!
(1)升降序排序算法说明:
升降序排列时,冒泡排序算法的运作如下:
比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
(2)OB1中子程序调用,如下图所示:
(3)子程序变量声明表,如下图所示:
(4)模式为1为升序,其运行结果,如下图所示:
(5)模式为0为降序,其运行结果,如下图所示:
(6)SCL代码,如下图所示:
(7)SCL代码(复制可用)
IF #Enable THEN
//获取数组上限
#L := LOWER_BOUND(ARR := #Array, DIM := 1);
//获取数组下限
#H := UPPER_BOUND(ARR := #Array, DIM := 1);
//冒泡法排序
FOR #i := #L TO #H-1 DO
FOR #j := #L TO #H-1-#i DO
IF #Mode THEN
//升序排列
IF #Array[#j] > #Array[#j + 1] THEN
#temp1 := #Array[#j];
#Array[#j] := #Array[#j + 1];
#Array[#j + 1] := #temp1;
END_IF;
ELSE
//降序排列
IF #Array[#j] < #Array[#j + 1] THEN
#temp1 := #Array[#j];
#Array[#j] := #Array[#j + 1];
#Array[#j + 1] := #temp1;
END_IF;
END_IF;
END_FOR;
END_FOR;
END_IF;
(8)程序编制注意事项:
数组上限自动获取函数的使用
数组下限自动获取函数的使用
FOR循环的嵌套使用
FOR循环的循环变量和数组上下限的配合
联系客服