class Solution {
public:
int minNumberInRotateArray(vector<int> rotateArray) {
if (rotateArray.empty()) {
return 0;
}
int low = 0;
int high = rotateArray.size() - 1;
int middle = 0;
if (rotateArray.at(low) < rotateArray.at(high)) { //说明已经是非递减排序,直接返回第一个最小元素
return rotateArray.at(low);
}
//二分查找
while (low < high) {
if (high - low == 1) {
middle = high;
break;
}
int middle = (low + high) / 2;
if (rotateArray.at(middle) >= rotateArray.at(low)) {
low = middle;
}
else if (rotateArray.at(middle) <= rotateArray.at(low)) {
high = middle;
}
}
return rotateArray.at(middle);
}
};