您的位置:首页 > 编程语言 > Java开发

java实现二分查找

2014-04-09 20:47 381 查看
二分查找

  找到数组的中间项,比较数key和中间树的大小,如果小于中间项,就查找前半部分,如果大于中间项,就查找后半部分。

非递归实现

public int BinarySearch(int[] a, int key){
int  beginIndex=0;
int  endIndex=a.length-1;
int midIndex=0;
while(a!==null&&beginIndex<endIndex){
midIndex=(beginIndex+endIndex)/2;
if(midIndex==key) return midIndex;
else if(midIndex<key) beginIndex=midIndex+1;
else endIndex=midIndex-1;
}
return -1;
}


递归实现

public int BinarySearch(int[] a , int key , int beginIndex, int endIndex){
int midIndex=(beginIndex+endIndex)/2;
if(a==null||beginIndex<endIndex||key<a[beginIndex]) return -1;
else if(a[midIndex]==key) return midIndex;
else if(a[midIndex]>key) return BinarySearch(a,key,beginIndex,midIndex-1);
else  return BinarySearch(a,key,midIndex+1,endIndex);
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: