OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4350|回复: 3

《匠人手记》发现了一个错误

[复制链接]

13

主题

202

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2012-10-27
在线时间
65 小时
发表于 2013-5-21 13:05:21 | 显示全部楼层 |阅读模式
P106页 手记九——10种软件滤波方法——三、中位值滤波法

其实就是用冒泡法排序,排完之后把中值返回,很简单。
但红线语句我觉得有点小漏洞,根据我的经验应该是“k<N-j-1”
如果是“k<N-j”会多排序一个数组外的数,如果此时内存的随机数比9大,到不影响。

菜鸟,需要大神们的肯定。。。。。。。。。。

源代码:
#include <stdio.h>
#define  N  5    //N为奇数

int main(int argc, const char * argv[])
{
    unsigned char j,k;
    unsigned char Temp;
    int ArrDataBuffer[N]={5,3,7,1,9};   //1,3,5,7,9
    
    for(j=0;j<N-1;j++)
    {
        for(k=0;k<N-j;k++)    //此处应该是“k<N-j-1”才对吧
        {
            if(ArrDataBuffer[k]>ArrDataBuffer[k+1])
            {
                Temp=ArrDataBuffer[k];
                ArrDataBuffer[k]=ArrDataBuffer[k+1];
                ArrDataBuffer[k+1]=Temp;
            }
        }
    }
    
    printf("%d",ArrDataBuffer[(N-1)/2]);
    return 0;
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-21 14:06:49 | 显示全部楼层
源代码,没错。
你改的错了,你可以直接测试下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

202

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2012-10-27
在线时间
65 小时
 楼主| 发表于 2013-5-21 22:10:13 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
http://baike.baidu.com/view/254413.htm
官方代码 ^.^ 
官方代码就是 j<n-i-1
就是最后要减一啊>
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-22 00:20:24 | 显示全部楼层
我错了,不好意思啊.
ArrDataBuffer[k+1]=Temp;
k最大值为N-2.
楼主位代码,当j=0的时候,k最大值可以到N-1>N-2.
所以,代码有问题.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-19 15:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表