剑指offer的第八题。
题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
1 package test; 2 3 import java.lang.reflect.Array; 4 import java.util.ArrayList; 5 import java.util.Iterator; 6 import java.util.List; 7 import java.util.Scanner; 8 import java.util.Stack; 9 10 public class Stacks { 11 12 public int minNumberInRotateArray(int [] array) { 13 14 int p ,q ,len; 15 int mid; 16 len = array.length; 17 p = 0; 18 q = len-1; 19 mid = 0; 20 while((p+1)!=q){ 21 22 mid =( p + q )/2; 23 if(array[p] <= array[mid]){ 24 p = mid; 25 } 26 27 else if(array[q]>=array[mid]){ 28 q = mid; 29 } 30 } 31 return array[q]; 32 } 33 34 public static void main(String[] args) { 35 Stacks stacks = new Stacks(); 36 int[] array = {3,4,5,1,2}; 37 System.out.println(stacks.minNumberInRotateArray(array)); 38 } 39 }