| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3051 人关注过本帖, 1 人收藏
标题:二分法查找,进来帮帮我吧
只看楼主 加入收藏
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
回复 47楼 beyondyf
另外对你的代码说两句,说的不合适你尽管批评就好:

第一段容错性太差,如输入的len是负数,因为C本来对数组的越界就不作检查,所以,你的代码如果len输入的是负数,会出现返回值为负数的情况,而非给出报错(或者返回0

值)。这一点上第二段做的要好一些。




学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-09 00:19
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
回复 47楼 beyondyf
额...
我只是大致瞟了一眼思路...跟我预想的差不多...
没仔细看代码...

有BUG么?

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-08-09 06:09
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
最近准备考研论坛也上的不多了,进来就看到这个帖子

杨大哥说的bug应该是第二段循环中,最后答案用的是b-f,说明b是第一个大于e的数的下标,f是第一个等于e的数的下标,由此分析,如果在这串数中e是最大的话,b最终会由于小1使得输出比标准答案小1,改的话应该是

for(f = a, b = len - 1; a < b; set[t = a + b >> 1] <= e ? (a = t) : (b = t - 1));


输出改为b-f+1
2013-08-09 11:30
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
小曹慧眼

这个问题也是我再次浏览贴子时发现的。这仍然是思维惯性造成的错误。

不过小曹的改法仍然存在问题,正确的改法是将两个循环的初始化部分中的 b = len - 1 都改成 b = len。

至于燕尾小妹,你还有很长的路要走。那段递归代码的效率也非常高,甚至很多情况下优于我的非递归代码,你还没看懂那段代码。而冗错一说更是外行话。参数的正确性应该在调用这个函数前检查,而不是在这个函数里。放在函数里是一种非常低效的做法。

重剑无锋,大巧不工
2013-08-09 12:20
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
嗯,虽然被批判的遍体鳞伤,但是着实长了不少见识~

我接触C语言也将近一年时间了,看来要学的东西确实还有不少呢~

对b版主的话我只想说:批评的好!,谢啦。



学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-09 13:19
木朵夕年
Rank: 1
等 级:新手上路
帖 子:25
专家分:8
注 册:2013-6-14
收藏
得分:0 
回复 47楼 beyondyf
对你的肯定是不言而喻的啊,你还缺分吗?!你们讨论好激烈,我都插不上话,所以默默的就结了。只能说都比我强,谢谢,真长见识了
2013-08-09 16:59
木朵夕年
Rank: 1
等 级:新手上路
帖 子:25
专家分:8
注 册:2013-6-14
收藏
得分:0 
回复 47楼 beyondyf
放在哪个帖子上无所谓,看帖子的时候,我只看帖,看代码,给分的时候,我就只看人了!
2013-08-09 17:03
快速回复:二分法查找,进来帮帮我吧
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036682 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved