您的位置:首页 > 其它

输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素

2013-11-09 12:01 323 查看
/**
*
* 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素
*
*/
public class MinNum {
public void findMin(int[] a){
//指向第一个元素的指针
int low = 0;
//指向最后一个元素的指针
int high = a.length - 1;
if(a[low] < a[high]){
System.out.println(a[low]);
return;
}
//当无法确认中间的数字是位于前面的子数组还是位于后面的子数组时,挨着找
int mid;
mid = (low+high)/2;
if(a[low] == a[high] && a[low] == a[mid]){
find(a);
return;
}
//最终使high指向后边递增数组的第一个数,low指向前边递增数组的最后一个数
while(low + 1 != high){
mid = (low+high)/2;
if(a[mid] < a[low]){
high = mid;
}else{
low = mid;
}
}
System.out.println(a[high]);
}
public void find(int[] a){
int min = a[0];
for(int i = 1;i <= a.length - 1;i++){
if(a[i] < min){
min = a[i];
}
}
System.out.println(min);
}
public static void main(String[] args) {
MinNum mn = new MinNum();
int [] a = {1,1,1,0,1};
mn.findMin(a);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐