[LeetCode] Search in rotated sorted array
search for a target from a rotated sorted array
non-recursion version from here
public int search(int[] A, int target) {
if(A==null || A.length==0)
return -1;
int l = 0;
int r = A.length-1;
while(l<=r)
{
int m = (l+r)/2;
if(target == A[m])
return m;
if(A[m]<A[r])
{
if(target>A[m] && target<=A[r])
l = m+1;
else
r = m-1;
}
else
{
if(target>=A[l] && target<A[m])
r = m-1;
else
l = m+1;
}
}
return -1;
}
Another version, search the min number from the array
int findMin( int[] num, int low, int high)
{
while (num[low] > num[high])
{
// find mid.
int mid = (low + high)/2;
// decide which sub-array to continue with.
if (num[mid] > num[high])
low = mid + 1;
else
high = mid;
}
return num[low];
}