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

来源:互联网 发布:淘宝官方集运 费用 编辑:程序博客网 时间:2024/04/29 23:59
/** *  * 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素 * */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);}}