旋转数组的最小数字

剑指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 }
View Code

 

posted @ 2017-07-21 14:34  Cloud_strife  阅读(117)  评论(0编辑  收藏  举报