/*
*首先判断首尾是不是最小,这样后面二分判断的时候就不用再考虑这种情况。
*然后就是要考虑相等序列的情况,如果找到最后发现是相等的,就要回头搜索另一个序列,用了一个*partFlag变量来标记那一半是没被搜索过的。
*/
function minNumberInRotateArray(rotateArray)
{
let array = rotateArray
let partFlag = null;
let left = 0;
let right = array.length - 1;
let middle;
if(array[left]<array[right]){
return array[left];
}
if(array[right]<array[right-1]){
return array[right];
}
while (true) {
if(right == left){
return array[right];
}
if(right-left==1){
if(array[left] != array[right]){
return Math.min(array[left], array[right]);
}
if(partFlag==0){
left = Math.floor((array.length - 1) / 2);
right = array.length - 1
}
else{
left = 0
right = Math.floor((array.length - 1) / 2);
}
}
middle = Math.floor((left + right) / 2);
if(array[middle]<array[middle-1]&&array[middle]<array[middle+1]){
return array[middle];
}
if (array[middle] >= array[left]) {
left = middle;
if(partFlag==null){
partFlag=1;
}
}
else{
right = middle;
if(partFlag==null){
partFlag=0;
}
}
}
}
module.exports = {
minNumberInRotateArray : minNumberInRotateArray
};