//二分一般用于在有序数组中查找,如果无序应该先排序
int left=0,right=n-1,m;
while(left<=right)
{
m=left+(right-left)/2;//防止溢出
//或m=left+((right-left)>>1)而 m=right-(right-left)/2会出错
if(a[mid]==target)
break;//找到目标数,停止查找
else if(a[mid]<target)
left=mid+1;
else if(a[mid]>target)
right=mid-1;
}
/*这是在[0,n-1]中查找,
若在[0,n)中查找循环中止条件改为left<right
在中值>target时right=mid。
所以二分查找的循环条件和left,right值的变化要根据查找区间*/