您的位置:首页 > 其它

20140717 二分查找 递归和非递归

2014-07-17 18:56 281 查看
1、二分查找代码

二分查找:

#include<iostream>
using namespace std;

int BinarySearch(int a[],int len,int value)//len是a中包含的元素熟练,如a={1,2,3},那么len=3,
{
int low=0,hi=len,mid=(low+hi)/2;
while(low<=hi)
{
if(value==a[mid])
{
return(a[mid]);
}
else if(a[mid]>value)
{
hi=mid-1;
}
else
low=mid+1;
mid=(low+hi)/2;
}
return -1;
}
void main()
{
int a[]={0,1,2,3,4,5,6,7,8,9};
int result=BinarySearch(a,9,0);
//int result=BinarySearch(a,10,9);
cout<<result<<endl;
}

二分查找递归方法:
int BinarySearch(int *a,int lo,int hi,int value)
{
if(lo>hi)
return -1;
int start=lo,end=hi,mid=(start+end)/2;
if(a[mid]>value)
end=mid-1;
else if(a[mid]<value)
start=mid+1;
else
return a[mid];
return BinarySearch(a,start,end,value);

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