public int minNumberInRotateArray (List<int> rotateArray) {
        int low = 0;
        int hight = rotateArray.Count-1;
        int mid = 0;
        if(rotateArray[low] < rotateArray[hight])return rotateArray[low];
        while(low<hight)
        {          
            mid = (hight+low)/2; //每次算一次中点
            //中间数>右边数,答案区间[mid+1,hight]
            if(rotateArray[mid]>rotateArray[hight])
            {
                low = mid+1;                
            }
            //中间数<右边数,答案区间[low,mid]
            if(rotateArray[mid]<rotateArray[hight])
            {
                hight = mid;
            }
            //除上面之外的情况,左右都可能有最小数
            if(rotateArray[mid]==rotateArray[hight])
            {
                //直接比较low跟hight哪个大,大的舍弃,小的留下
                //一样的话去掉low跟hight都行(我选择的是去掉low,即让low++)
                switch(rotateArray[low]>=rotateArray[hight])
                {
                    case true:
                        low++;
                        break;
                    case false:
                        hight--; 
                        break;
                }
            }
        }
        return rotateArray[hight];      
    }