一、从小到大排序
通过ST语言,将一组乱序的数据,按照从小到大的方式排列。
1.建立全局标签
2.编写程序
3.程序监控
先进行数组数据赋值,这里我们只排列6个数据,若想排列更多,更改一下数组数据数量多少即可;比如要排20个数据,只需建立一个0~19的数组,然后再将“Data_Bulk”的值更改为20。
执行后的结果显示
程序原理分析:
(地址[0]=56,地址[1]=22,地址[2]=31,地址[3]=8,地址[4]=22,地址[5]=40).
执行第一次外循环(0~5)
执行第一次内循环(0)
将地址[0]=56 和 地址[1]=22 进行比较,比较56>22,比较成立,则程序执行。先将地址[0]的值56存放到“数据暂储”单元;然后将地址[1]的值22赋值给地址[0];最后将“数据暂储”单元的值赋值到地址[1]中。即地址[0]=22,地址[1]=56。
执行第二次内循环(1)
将地址[1]=56 和 地址[2]=31 进行比较,比较56>31,比较成立,则程序执行。先将地址[1]的值56存放到“数据暂储”单元;然后将地址[2]的值31赋值给地址[1];最后将“数据暂储”单元的值赋值到地址[2]中。即地址[1]=31,地址[2]=56。
执行第三次内循环(2)
将地址[2]=56 和 地址[3]=8 进行比较,比较56>8,比较成立,则程序执行。先将地址[2]的值56存放到“数据暂储”单元;然后将地址[3]的值8赋值给地址[2];最后将“数据暂储”单元的值赋值到地址[3]中。即地址[2]=8,地址[3]=56。
执行第四次内循环(3)
将地址[3]=56 和 地址[4]=22 进行比较,比较56>22,比较成立,则程序执行。先将地址[3]的值56存放到“数据暂储”单元;然后将地址[4]的值22赋值给地址[3];最后将“数据暂储”单元的值赋值到地址[4]中。即地址[3]=22,地址[4]=56。
执行第次内循环(4)
将地址[4]=56 和 地址[5]=40 进行比较,比较55>40,比较成立,则程序执行。先将地址[4]的值56存放到“数据暂储”单元;然后将地址[5]的值40赋值给地址[4];最后将“数据暂储”单元的值赋值到地址[5]中。即地址[4]=40,地址[5]=56。
第一次外循环结束,内循环也结束了。最终排列出来的结果如下:
22、31、8、22、40、56;此时最大值已经排列在地址的最高位了。
执行第二次外循环(1~5)
执行第一次内循环(0)
将地址[0]=22 和 地址[1]=31 进行比较,比较22>31,比较不成立,则程序不执行。
执行第二次内循环(1)
将地址[1]=31 和 地址[2]=8 进行比较,比较31>8,比较成立,则程序执行。先将地址[1]的值31存放到“数据暂储”单元;然后将地址[2]的值8赋值给地址[1];最后将“数据暂储”单元的值赋值到地址[2]中。即地址[1]=8,地址[2]=31。
执行第三次内循环(2)
将地址[2]=31 和 地址[3]=22 进行比较,比较31>22,比较成立,则程序执行。先将地址[2]的值31存放到“数据暂储”单元;然后将地址[3]的值22赋值给地址[2];最后将“数据暂储”单元的值赋值到地址[3]中。即地址[2]=22,地址[3]=31。
执行第四次内循环(3)
将地址[3]=31 和 地址[4]=40 进行比较,比较31>40,比较不成立,则程序不执行。
执行第次内循环(4)
将地址[4]=40 和 地址[5]=56 进行比较,比较40>56,比较不成立,则程序不执行。
第二次外循环结束,内循环也结束了。最终排列出来的结果如下:
22、8、22、31、40、56;此时第二大值也已经排列好了。
执行第三次外循环(2~5)
执行第一次内循环(0)
将地址[0]=22 和 地址[1]=8 进行比较,比较22>8,比较成立,则程序执行。先将地址[0]的值22存放到“数据暂储”单元;然后将地址[1]的值8赋值给地址[0];最后将“数据暂储”单元的值赋值到地址[1]中。即地址[0]=8,地址[1]=22。
执行第二次内循环(1)
将地址[1]=22 和 地址[2]=22 进行比较,比较22>22,比较不成立,则程序不执行。
执行第三次内循环(2)
将地址[2]=22 和 地址[3]=31 进行比较,比较22>31,比较不成立,则程序不执行。
执行第四次内循环(3)
将地址[3]=31 和 地址[4]=40 进行比较,比较31>40,比较不成立,则程序不执行。
执行第次内循环(4)
将地址[4]=40 和 地址[5]=56 进行比较,比较40>56,比较不成立,则程序不执行。
第三次外循环结束,内循环也结束了。最终排列出来的结果如下:
8、22、22、31、40、56;此时第三大值也已经排列好了。通过观察我们发现数值已经完全排列好了,虽然我们的程序已经排列好,但我们的程序并没有运行结束,会继续运行下去,直至循环的结束,跳出循环为止。
此时细心的小伙伴可能已经发现出该程序有点小问题;即循环次数有点浪费,循环次数的多少,对CPU的运算还是有一定影响的,那我们要如何去解决这个问题呢?下一篇我们会对该程序进行优化,然后讲解。
最近天气降温,各位小伙伴儿要注意防寒保暖!另外祝各位小伙伴儿工作顺利,天天开心!