>文末有55个实战案例资料 导读:在一些特殊的应用场景,需要对设备进行顺序排序,那么我们常用的排序方法有冒泡排序、选择排序、插入排序、归并排序等方法。之前的文章中讲解过冒泡排序,那么本文来使用“选择排序”的算法做演示,便于大家在做编程的时候可以借鉴。 选择排序的原理: 先在未排序序列中找到最小(或最大)元素,存放到排序序列起始位置,然后在剩余未排序元素中继续找最小(或最大)元素,放到已排序序列末尾。例如对[8, 3, 4, 9]排序,第一趟找到最小的3放在首位,接着对剩余元素操作,直到全部排序。 举例:以下是将数据[8, 6,7, 3]进行排序的过程。 第1轮:将第1个数据和后面的3个数据进行比较: 第1次8和6比较,6比8小,将6放到最前面,变成[6, 8, 7,3]; 第2次6和7比较,6比7小,6仍然是最前,变成[6, 8, 7,3]; 第3次6和3比较,3比6小,将3放到最前面,变成[3, 8, 7,6]; 第2轮:仍然是将第2个数据与后面的3个数据比较 第3轮:仍然是将第3个数据与后面的3个数据比较
其实根据以上的逻辑及规律可以看出:如果有4个数据的话,第一轮是只需要比较3次;第二轮是第2个数据和后面的两个数据比较,只需要比较2次;第三轮是第3个数据和后面的一个数据比较,只需要比较1次。根据这个规律我们把选择排序的思路理一下。 (1)将未排序的第1个数字和剩余的每个数字进行对比,如果与预期的顺序(升序)不符,则换位 (2)需要进行多轮循环,可以使用嵌套的循环来实现 (3)外层循环表示循环轮次,数组的长度-1 ①初始条件: int i=0 ②循环条件: i<数组长度– 1 例如有4个数据,需要3轮 (4)内层循环用于对比和换位 ①初始条件: int j =i +l ②循环条件: j<数组长度
程序解读: 程序行1是将数据放入到静态变量中,便于参与运算 外层循环: 使用FOR循环从数组的第一个元素开始遍历,直到倒数第二个元素。变量i作为外层循环的索引。在每次外层循环中,假设当前索引i对应的元素是未排序部分中的最小值的索引,即#minIndex :=#i 内层循环: 内层循环从i +1 开始,遍历到数组的最后一个元素。变量 j 作为内层循环的索引。 在内层循环中,比较“#暂存数据[#j]”和“#暂存数据[#MinIndex]”,如果“#暂存数据[#j]”小于 “#暂存数据[#MinIndex]”,则更新minIndex为j,表示找到了更小的值。 交换元素: 内层循环结束后,找到了未排序部分中的最小值的索引minIndex 。 将 “#暂存数据[#i]”和 “#暂存数据[#MinIndex]”进行交换,即将当前找到的最小值放到已排序部分的末尾。
调用FB块,并且分配参数以及监控数据
数据监控
最近有很多小伙伴说要案例书籍,说是手机上看文章不是很方便,我抽时间把55个实战案例全部整理出来,案例都是比较典型的,其中包括气缸控制程序、报警程序、程序框架、运动控制程序封装、模拟量控制变频器、通信等实战案例。需要的可以加我微信:biao467524527,如果加不上可以私信我。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |