【second】Search in Rotated Sorted Array

不要忘了考虑这种情况[3,1] 此时left == mid,A[left]==A[mid]

    int search(int A[], int n, int target) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        int left = 0,right = n-1;
        while(left<=right)
        {
            int mid = left+(right-left)/2;
            if(A[mid]==target)
                return mid;
            if(A[left]<A[mid]) //left part is sorted
            {
                if(A[left]<=target&&target<A[mid])
                    right = mid-1;
                else
                    left = mid+1;
            }else if(A[left]>A[mid]) //right part is sorted
            {
                if(A[mid]<target&&target<=A[right])
                    left = mid+1;
                else
                    right = mid - 1;
            }else
                left++;  考虑left == mid的情况
        }
        return -1;
        
    }

  

posted @ 2013-10-18 16:26  summer_zhou  阅读(111)  评论(0编辑  收藏  举报