您的位置:首页 > 其它

二分查找递归与非递归实现

2013-12-16 21:05 295 查看
二分查找思想:将有序序列按照中间位置分为两半,如果中间元素与待查找元素相等,则返回;

如果中间元素小于待查找元素,则在右半边查找;否则在左半边查找。

Java递归实现:

public static int find(int[] a,int begin,int end,int b){

if(begin==end){

if(a[begin]==b) return begin;

return -1;
}

int mid=(begin+end)/2;

if(a[mid]==b) return mid;

else if(a[mid]>b){

return find(a,begin,mid-1,b);

}else{

return find(a,mid+1,end,b);
}

}

Java非递归实现:
public static int find(int[] a,int b){

int left=0;
int right=a.length-1;

while(left<=right){

int mid=left+((right-left)>>1);

if(a[mid]==b){

return mid;

} else if(a[mid]>b){

right=mid-1;

}else{

left=mid+1;

}
}

return -1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二分查找 递归 算法