经过大脑思考的:二分查找
首先声明:这是一个经过同学分析的、老师要求的、自己脑袋思考的、打过草稿的、用圆珠笔,右手亲手写的java有关的二分查找。
?
什么是二分查找:以一个数组(已经升序排列好了的)来分析,首先找到整个数组索引值的中间点的数组的key,如果等于你所要找的值X则这个索引值就是你要找的;如果>X,证明素要找的的前半部分,否则在后半部分,然后递归即可。(当然,这是我个人的理解)
?
?我的代码实现:
int bin_search (NODE array[ ],int n,int k){ int low=0,hig=n-1,mid; while(low<=hig) { mid=(low +hig)/2; //取区间中点 if (array[mid].key= =k) return(mid); //查找成功 if (array[mid].key>k) hig=mid-1; //在左子区间中查找 else low=mid+1; } //在右子区间中查找 return(-1); } //查找失败
?
感觉还是自己写的自己理解容易些,多亏了志桢和国栋耐心的修改哈!虽然之前就看过二分查找,也大致了解二分的思想,但到底还是不动手不知道这个有多难啊!!!