[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];
}
posted on 2015-03-31 22:56  Seth_L  阅读(128)  评论(0编辑  收藏  举报