在一个旋转排序数组中查找指定值
比如4,5,6,7,0,1,2 中搜索0
int Search(int *arr, int len, int target)
{
int l = 0;
int r = len;
if(r == 0) return -1;
int m;
while(r > l)
{
m = (l+r) >> 1;
if(arr[m] > arr[l])
{
l = m;
}
else
{
r = m;
}
}
if(target < arr[0])
{
l = r;
r = len;
}
else
{
l =0;
r = l+1;
}
if(l == len)
{
return -1;
}
while(r > l)
{
m = (l+r) >> 1;
if(arr[m] < target)
{
l = m;
}
else if(arr[m] > target)
{
r = m;
}
else if(arr[m] == target)
{
return m;
}
}
return -1;
}
int main()
{
int arr[] = {4,5,6,7,0,1,2};
int ret = Search(arr, 7, 0);
printf("ret = %d \n", ret);
return 0;
}