首页 理论教育 排序算法冒泡法及实现步骤

排序算法冒泡法及实现步骤

时间:2023-06-23 理论教育 版权反馈
【摘要】:图6-64 排序程序本排序用的算法为“冒泡法”。它用普通指令在指定的DM区内,按降幂排序的梯形图程序。从图梯级1知,当“排序命令”ON时,第1条执行的指令MOV,使“开始地址”赋值给“指针0”。再就是执行微分指令,使LR0.05ON一个扫描周期。LB0.05 ON,使图梯级3中“排序开始”ON,并自保持,直到“排序完成”的常闭接点OFF。图中从SBN指令开始到RET指令之间的程序,为子程序。

排序算法冒泡法及实现步骤

978-7-111-26319-7-Chapter06-81.jpg

图6-64 排序程序

本排序用的算法为“冒泡法”。图6-64所示为这个程序。它用普通指令在指定的DM区内,按降幂排序的梯形图程序。

该图用的是符号地址。从图梯级1知,当“排序命令”ON时,第1条执行的指令MOV,使“开始地址”赋值给“指针0”。接着,又使“开始地址”赋值给“指针1”。注意,这两个指令都是微分执行的。再就是执行微分指令,使LR0.05ON一个扫描周期。

LB0.05 ON,使图梯级3中“排序开始”ON,并自保持,直到“排序完成”的常闭接点OFF。

在“排序开始”ON期间,梯级4将调子程序1。每个扫描周期都将调一次。(www.xing528.com)

图中从SBN指令开始到RET指令之间的程序,为子程序。每调一次,总是把“指针0”指向的数与“指针1”指向的数进行比较,如前者小,则把前后两者互换(用XCHG指令)。接着,修改“指针1”,并判断是否“指针1”已大于“结束地址”值。

如“指针1”值大过“结束地址”值,则修改“指针0”,则把“指针0“的现值赋值给”“指针1”。并判断“指针0”是否已大于“结束地址”值。如不大于,则重复上述循环。如大于,则“排序完成”ON,其常闭接点OFF,说明排序完成。

“排序完成”常闭接点OFF,将使“排序开始”OFF(如图所示梯级3),“排序开始”OFF使“查找完成”复位(如图所示梯级2)。程序复原。

执行这个程序后,将使从开始地址到结束地址的DM区的数作降幂排序。如要作升幂排序,可把图中P_LT改为P_GT即可。

提示:这里排序用了两次循环,并须多个扫描周期才能完成。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈