打印
[C语言]

滑动窗数组,想听听各位坛友的高见

[复制链接]
799|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
相信对于处理数据而言,滑动窗口数组是很常见的存放数据的方法了,但之前只觉得能用就OK,一直没有仔细去考虑如何才能让代码更简洁更高效,所以把自己用的方法放上来,有错误不足的地方请各位帮忙指正,顺便聊聊更好的实现方法,O(∩_∩)O哈哈~我就不放代码了(一言不合),第一种适合需存储的数据不多的,进子函数后如此赋值,保持最后一个是当前值;第二种适合多数据缓存,用for循环来干,往右一个一个填满数组后再向左移丢掉第一个填充最后一个。
欢迎各位的发言,有更好的方法可以拿出来大家一起分享



本人所用的方法.jpg (431.04 KB )

本人所用的方法.jpg

相关帖子

沙发
linqing171| | 2018-11-13 21:33 | 只看该作者
用一个静态数组做ringbuffer, 外加维护一个sum。环形缓冲区记录一个当前下标,记录一个缓冲区是否已经满了,记录一个数组的最大下标。
每次新采样进来的,替换当前下标的值,同时sum减去替换前的,加上替换后的。下标移动到下一个位置,如果移动到了数组的末尾,则从第一个重新开始。

使用特权

评论回复
板凳
一叶倾城wwq|  楼主 | 2018-11-13 21:42 | 只看该作者
linqing171 发表于 2018-11-13 21:33
用一个静态数组做ringbuffer, 外加维护一个sum。环形缓冲区记录一个当前下标,记录一个缓冲区是否已经满了 ...

环形缓冲区,这个好用么?学习了,不过这个和普通的数组放满了在从头放有什么不一样的吗?

使用特权

评论回复
地板
座机呀| | 2018-11-13 22:34 | 只看该作者
数据可以不用动,移动读指针和写指针就可以了

使用特权

评论回复
5
一叶倾城wwq|  楼主 | 2018-11-14 08:32 | 只看该作者
座机呀 发表于 2018-11-13 22:34
数据可以不用动,移动读指针和写指针就可以了

好办法,只是指来指去会不会太绕了?

使用特权

评论回复
6
座机呀| | 2018-11-14 16:48 | 只看该作者
一叶倾城wwq 发表于 2018-11-14 08:32
好办法,只是指来指去会不会太绕了?

就相当于你看书,可以眼睛动,书不动,或者眼睛不动,书动,具体选哪个,看你自己那个实现方便

使用特权

评论回复
7
一叶倾城wwq|  楼主 | 2018-11-14 17:03 | 只看该作者
座机呀 发表于 2018-11-14 16:48
就相当于你看书,可以眼睛动,书不动,或者眼睛不动,书动,具体选哪个,看你自己那个实现方便 ...

解释的很生动,好的,看个人习惯了

使用特权

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

本版积分规则

80

主题

1341

帖子

11

粉丝