读到第三章时,讲到一个二分法的搜索函数,测试了一下原书代码,如下:
|
随机给一个数组赋值,然后用冒泡算法给数组排序,再让这个binsearch函数给数组排序,发现有时候,当数组中没有要搜索的值时,即binsearch函数的第一个参数x值,数组中没有这个x值,函数会陷入死循环,到网上一搜,看到这么一篇文章[1],里面讲了二分法的问题,也给了一些示例代码,这才看到,是binsearch的代码有点小问题,即high = mid + 1;这行代码,应该是high = mid - 1;
重新再修改好代码,以下是正确的binsearch算法。
|
一切都正常了。
参考文章:
[1]二分法——查找、排序以及库函数bsearch的用法
http://blog.csdn.net/douzixinxin/archive/2006/02/21/604144.aspx