int b_search(int* array,int low,int high,int target)
{
while(low<=high){
int mid=(low+high)/2;
if(array[mid]>target)
high=mid-1;
else if(array[mid]<target)
low=mid+1;
else
return mid;
}
return -1;
}
int search(int* nums, int numsSize, int target) {
int i, pos, point = -1;
for(i = 1; i < numsSize; ++i){
if(nums[i] < nums[i - 1])
point = i;
}
if(numsSize == 0) return -1;
if(point == -1) return b_search(nums, 0, numsSize - 1, target);
if(target < nums[point] || target > nums[point - 1]) return -1;
if(target >= nums[0]) return b_search(nums, 0, point - 1, target);
if(target <= nums[numsSize - 1]) return b_search(nums, point, numsSize - 1, target);
else return -1;
}
{
while(low<=high){
int mid=(low+high)/2;
if(array[mid]>target)
high=mid-1;
else if(array[mid]<target)
low=mid+1;
else
return mid;
}
return -1;
}
int search(int* nums, int numsSize, int target) {
int i, pos, point = -1;
for(i = 1; i < numsSize; ++i){
if(nums[i] < nums[i - 1])
point = i;
}
if(numsSize == 0) return -1;
if(point == -1) return b_search(nums, 0, numsSize - 1, target);
if(target < nums[point] || target > nums[point - 1]) return -1;
if(target >= nums[0]) return b_search(nums, 0, point - 1, target);
if(target <= nums[numsSize - 1]) return b_search(nums, point, numsSize - 1, target);
else return -1;
}