public static int findMin(int[] num) {
        if (null == num || 0 == num.length) return -1;
        int low = 0, high = num.length - 1;
        if (1 == num.length) return num[0];
        if (num[low] < num[high]) return num[low];
        while (low <= high) {
        	if (low + 1 == high) 
        		return num[low] > num[high] ? num[high] : num[low];
        	int mid = (low + high) / 2;
        	if (num[mid] > num[low]) low = mid;
        	else high = mid;
        }
    	return num[low];
    }