int FindValue(const int *brr,int n,int val)
{
int pos = -1;
int left = 0;
int right = n - 1;
if(NULL == brr || n < 1) return pos;
while(left <= right)
{
int mid = (right - left + 1) / 2 + left;
if(val < brr[mid])
{
right = mid - 1;
}
else if(val > brr[mid])
{
left = mid + 1;
}
else
{
while(mid < right && brr[mid + 1] == val) //防止重复的数字 查找最左边的
{
++mid;
}
pos = mid;
}
}
return pos;
}
分治策略
最新推荐文章于 2023-03-14 18:10:10 发布