二分法寻找元素的方法---探讨自己的个性

     以前在课堂上接触过二分法这个概念。如今再次从教程上看到的时候,我决定自己写把代码写出来,然后再去看教程,看一下我自己所写和教程上的分析有些什么差距。

     二分法,首先当然是要寻找其中点。

     我设置一个int型变量o.起初把其值赋值为0.

     而接下来,我考虑二分法是一个无限循环,所以,我使用了while(1)循环条件。这里,我忽视了一个问题,如果没有找到答案,那么程序会一直执行下去。

     我写出来的代码为:

    

这个while(o<n)判断条件,很可能会陷入死循环,例如o=6,n=7,那么这个循环就会一直执行下去。而且例外一点,当找不到数值的时候,按照题目的规则,应该返回的是字符串的长度,而在这段代码里,由于对n进行了赋值操作。其return n;语句返回的可能是被修改后的n的值。

这个题目比较简单,而且思路很明了。但是在解决这个问题的时候,我缺在处理过程中出了这么多错误和缺陷。

其原因:1,毛躁;2,考虑不全面。

毛躁在于处理问题的时候急于下结论,而没有仔细思考。

考虑不全面在于整理思路出来之后,内心认为问题已经被解决,而未顾及细节之处。

 

再来看书上的代码:

 

这段代码不会出现死循环(h,i都进行移动操作),第二不会出现遗漏(设定值为o<=h)。

相比我自己写的,在安全性,结构性方面都要好得多,而且理解起来也容易得多。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值