当前位置: 主页 > PLC控制

如何得到数据的次大值和次小值

数据是每一秒中获取一次,我要在30秒将得到的30个数找出次大值次小值,因为最大最小我已经找出来了。

问题补充:
声明下,我不排序,只是找出值。排序的话还要新建DB块储存。而且如果排序数目过多,数据过大,这边没循环完成另外一边又有新的数据过来了。会导致死机。我只希望将我得到的数找到次大和次小。不要在跟我说什么冒泡程序了,那个东西我会。请认真看我的程序

图片说明:

如何得到数据的次大值和次小值7080d695556446847FC7e53cf0530c01

最佳答案

你采集的数据为30个双字,加上需要的最大最小、第二大、第二小总共34个双字。

在程序中你可以在DB中分配34个双字,初始化为从dbd0—dbd132为从小到大排列。

采集数据时把它们存在2–31这30个双字中,然后采用类似冒泡排序的方式,第一遍对全部34个数扫描可以取出最小值和最大值,并把它们存在dbd0和dbd132中,第二遍就可以对除去最大最小值后的32个数扫描取出次小值和次大值,并把它们存在dbd4和dbd128中。

提问者对于答案的评价:
thanks

专家置评

已阅,最佳答案正确。除了冒泡算法外,还可以在得出最大值和最小值后,去除这两项,再次寻找最大值和最小值,即可得出次极值。

  • 关注微信

猜你喜欢

微信公众号