int Find(int * A,int left,int right, int key)
{
int center;
if(left<=right)
{
center=left+(right-left)>>1;// //防止溢出,移位也更高效。同时,每次循环都需要更新。
if(A[center]<=key)
Find(A,center+1,right,key);
else if(A[center]>key)
Find(A,left,center,key);
else
return center;//可能会有读者认为刚开始时就要判断相等,但毕竟数组中不相等的情况更多 //如果每次循环都判断一下是否相等,将耗费时间
}
else
return -1;
}
int binary_find(int * A,int N,int key)
{
int left=0;
int right=N-1;
int center;
while(left<=right)
{
center=left+(right-left)>>2;
if(A[center]<=key)
left=center+1;
else if(A[center]>key)
right=center;
else
return center;
}
return -1;
}
int find(int * A,int N,int key)
{
return Find(A,0,N-1,key)