#include<iostream>
using namespace std;
int Binary_Search(int *a,int n,int key)
{
int low,high,mid;
low = 0;
high =n;
while (low <= high )
{
mid = low + ( high - low )/2;
if ( key < a[mid])
high = mid -1;
else if (key > a[mid])
low = mid + 1;
else
return mid ;
}
return -1;
}
int main()
{
int a[]={0,1,2,3,4,5,6,7,8,9,10};
int result = Binary_Search(a , 9,10);
cout<<"result = "<<result<<endl;
}
mid = ( low + high )/2 存在的隐患是
如果low比较大,接近于int上限,high也比较大,
low+high就会超出整型数的表示范围
32位机器能表示的最大整型数为2^32-1 = 42 9496 7295,约等于40亿
所以StringtoInt中输入的数字串长度不能大于10