打印
[STM32F1]

排序算法速度

[复制链接]
949|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunwave|  楼主 | 2017-1-3 15:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在STM32F103中采用DMA采集3个通道的数据,放在数组AD_VALUE[474][3]中,然后想滤波后求出均值。现在的问题是,若直接求和,然后除以数据个数474,时间上可以满足要求。若想排序最大的20个数据,最小的20个数据,就需要对原来的数组进行排序才可以,时间就超过指标要求了。有人说可以局部排序,就是只是将数据中的最大20个数据去掉,最小的20个数据去掉,而原来的数据还是乱序的(可以满足要求,因为只需求和就可以了),请问各位,有没有这方面的算法可以介绍一下?多谢了!
沙发
JLennon| | 2017-1-3 17:16 | 只看该作者
板凳
598330983| | 2017-1-3 17:18 | 只看该作者
直接用现成的排序算法就行了。

使用特权

评论回复
地板
mmuuss586| | 2017-1-3 18:27 | 只看该作者
本来就是矛盾的;

你要实现什么效果呢?
测平均电压吗?

使用特权

评论回复
5
xxzouzhichao| | 2017-1-3 19:28 | 只看该作者
库函数里好像有个qsort函数可以快速排序

使用特权

评论回复
6
sunwave|  楼主 | 2017-1-5 14:35 | 只看该作者
mmuuss586 发表于 2017-1-3 18:27
本来就是矛盾的;

你要实现什么效果呢?

就是求平均电压,但想把数据中的几个最大值和最小值剔除后,再求平均

使用特权

评论回复
7
sunwave|  楼主 | 2017-1-5 14:36 | 只看该作者
我只需要剔除数据序列中的几个最大的和几个最小的,并不需要数据序列完美排序。

使用特权

评论回复
8
LyCrystal| | 2017-1-5 22:27 | 只看该作者
直接用现有的排序方法就行

使用特权

评论回复
9
LyCrystal| | 2017-1-5 22:30 | 只看该作者
sunwave 发表于 2017-1-5 14:36
我只需要剔除数据序列中的几个最大的和几个最小的,并不需要数据序列完美排序。 ...

如果只需要最提取几个最小的和最大的就维护两个序列;遍历数据序列,将小值和大值放入对应的序列;

使用特权

评论回复
10
quansea| | 2017-1-9 18:28 | 只看该作者
学习支持!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

154

帖子

5

粉丝