把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
public int minNumberInRotateArray(int [] array)
{
if(array==null||array.length==0){
return 0;
}
int len=array.length;
int low=0;
int high=len-1;
if(array[low]<array[high]){//if the array is not shifted actually,e.g. {1,2,3,4,5}
return array[low];
}
int mid=0;
while(low<=high){
mid=(low+high)/2;
if(mid==low){//if there are only two elements left
return array[low]<=array[high]?array[low]:array[high];
}
if(array[mid]<array[mid-1]&&array[mid]<array[mid+1])
{
return array[mid];
}
if(array[mid]>=array[low]&&array[low]<=array[low+1]){
low=mid;
}else{
high=mid;
}
}
return array[mid];
}