int Special_arry(int a[],int left,int right){
    int min = a[left];
    int i ;
    for(i=left;i<=right;i++)
    {
        if(a[i]<min)
            min = a[i];
    }
    return min;
}


int minNumberInRotateArray(int* rotateArray, int rotateArrayLen ) {
    int num;
    int left=0;
    int right = rotateArrayLen-1;
    int mid  = left;
    
    if(rotateArrayLen==0)
        return NULL;
    if(rotateArrayLen==1)
        return rotateArray[0];
    if(rotateArrayLen==2)
        return rotateArray[0]>rotateArray[1]?rotateArray[1]:rotateArray[0];
    
    while(rotateArray[left]>=rotateArray[right])
    {
        if(right-left<=1)
        {
            mid=right;
             break;
        }
        mid  = (left+right)/2;
        if(rotateArray[left]==rotateArray[mid]&&rotateArray[right]==rotateArray[mid])
            return Special_arry(rotateArray,left,right);
        
        if(rotateArray[mid]>=rotateArray[left])
            left = mid;
        else if (rotateArray[mid]<=rotateArray[right])
            right = mid;
    }
    return rotateArray[mid];
}