数组取平均压缩
来源:互联网 发布:思密达网络意思是什么 编辑:程序博客网 时间:2024/05/09 02:36
后台蓝牙采集到的数据量很大,比如有1389条数据,但是在界面上只能显示30个数据点,多了的话这回影响界面美观。那么这样我们后台向前台提供数据时需要将数据压缩成30个点。1389/30=46.3。如果简单将每46个数据取平均或者没47个取平均都会影响精度。所以基本想法是将0.3作为修正因子,每隔46加0.3。直到修正因子达到1 或者1以上时,就将47个数据取平均,再将小数部分作为修正因子。由于只需要循环一次即可,因此时间复杂度为o(n)。算法代码如下:
-(NSArray *)mergeArray:(NSArray*)array toArrayLength:(NSUInteger) length{ NSMutableArray *resultArray=[[NSMutableArray alloc] init]; if (array==nil || length<=0 || length>array.count) { return nil; } /* x: 平均个数的整数部分 如 average=2.6 则x=2 y: 平均个数的小数部分 如 average=2.6 则y=0.6 z: 用于累加 */ CGFloat average=(float)array.count/length; int x=(int)average; CGFloat y=average-x; int count=0; CGFloat sum=0; CGFloat z=0; for (int i=0;i<array.count; i++) { sum+=[array[i] intValue]; if (count==x-1) { z=z+y; } count++; if (count==(int)(x+z) || count==array.count-1) { [resultArray addObject:[NSNumber numberWithFloat:sum*1.0/count]]; sum=0; count=0; if (z>1) { z=z-1; } } } return resultArray;}
0 0
- 数组取平均压缩
- 算法在一个数组中平均取x个数
- 平均分割数组
- js平均分割数组
- 求平均成绩(数组)
- 平均成绩(维数组)
- PHP 平均拆分数组算法
- 求参赛者的平均分,取最大值
- Perl的那些技巧:平均切割数组
- 应用:二维数组求平均分
- 动态数组实现输出全班平均成绩
- 平均
- 状态压缩--方格取数
- 图像处理之图像rgb取平均(java)
- 最大子数组和最大值平均子数组
- 关于取数组地址
- 数组取最大值最小值
- 数组算法取值
- 安装图形界面 linux
- cocos 3.4 十进制秒数 转换为时间并用 LabelAtlas显示
- NYOJ---题目477A+B Problem III
- webp图片格式2.x-5.x支持方案
- 杭电1058
- 数组取平均压缩
- 继续前进!
- linux学习-------->基本操作命令
- 八皇后问题
- ios多线程操作(五)—— GCD串行队列与并发队列
- 第三周:程序阅读(4)
- RANSAC与最小二乘算法的应用
- 支付宝
- Kafka剖析(一):Kafka背景及架构介绍