查找排序数组指定值,会有重复值,找出第一个和最后一个值的位置
void searchRange(int *arr, int len, int target)
{
if(len == 0) return;
int left = 0;
int right = len -1;
while(left <= right)
{
int mid = (left + right) >> 1;
if(arr[mid] == target)
{
left = mid;
right = mid;
while(left > 0 && arr[left] == arr[left-1]) left --;
while(right < len -1 && arr[right] == arr[right+1]) right++;
printf("find result left:%d right:%d \n", left, right);
return;
}
else if(arr[mid] > target) right = mid-1;
else left = mid+1;
}
}
int main()
{
int arr[] = {5,7,7,8,8,10};
searchRange(arr, 6, 8);
return 0;
}