package 旋转数组的最小数字;
/*题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的
旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数
组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为 1.*/
public class Problem11 {
public static void main(String[] args) {
Problem11 problem11=new Problem11();
int[] array={3,4,5,1,2};
Integer aInteger=problem11.printMinNum(array);
System.out.println(aInteger);
}
public Integer printMinNum(int[] array){
int start=0;
int end=array.length-1;
int mid=start;
while(array[start]>=array[end]){
mid=(start+end)>>1;
if((end-start)==1){
mid=end;
break;
}
if(array[start]==array[mid]&&array[mid]==array[end]){
int min=0;
for(int i=0;i<array.length;i++){
if(array[i]>min){
min=array[i];
}
}
array[mid]=min;
}
if(array[mid]>=array[start]){
start=mid;
}
if(array[mid]<=array[end]){
end=mid;
}
}
return array[mid];
}
}
/*题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的
旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数
组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为 1.*/
public class Problem11 {
public static void main(String[] args) {
Problem11 problem11=new Problem11();
int[] array={3,4,5,1,2};
Integer aInteger=problem11.printMinNum(array);
System.out.println(aInteger);
}
public Integer printMinNum(int[] array){
int start=0;
int end=array.length-1;
int mid=start;
while(array[start]>=array[end]){
mid=(start+end)>>1;
if((end-start)==1){
mid=end;
break;
}
if(array[start]==array[mid]&&array[mid]==array[end]){
int min=0;
for(int i=0;i<array.length;i++){
if(array[i]>min){
min=array[i];
}
}
array[mid]=min;
}
if(array[mid]>=array[start]){
start=mid;
}
if(array[mid]<=array[end]){
end=mid;
}
}
return array[mid];
}
}