二分搜索
时间:2010-11-29 来源:microsoftmvp
#include<iostream>
using namespace std;
//前置条件:数组a已经排序,left和right是搜索区间的开始和结束位置,X为要查找的元素
//后置条件:若搜索成功,返回X在数组a中的索引,否则,返回-1
int BinarySerch(int *a,int left,int right,int X);
int main()
{
int a[]={1,2,3,4,5,6,7,8,9,10};
cout<<BinarySerch(a,0,9,5)<<endl;
cout<<BinarySerch(a,-1,9,10)<<endl;
cout<<BinarySerch(a,0,9,11)<<endl;
system("PAUSE");
return 0;
}
int BinarySerch(int *a,int left,int right,int X)
{
if(a==NULL||left<0)return -1;
int mid;
while(left<=right)
{
mid=(left+right)>>1;
if(a[mid]==X)return mid;
else if(a[mid]<X) left=mid+1;
else right=mid-1;
}
return -1;
}
相关阅读 更多 +