package com.algorithm;
import java.util.Arrays;
/*把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。*/
public class RotateNumber {
//运行时间:195ms
//占用内存:4307k
public int minNumberInRotateArray(int [] array) {
if(array.length == 0)
return 0;
int[] arrayb = new int[array.length];
int count = 0;//记录下标值,最大的那个
int j = 0;
for(int i = 0; i < array.length; i++) {
j = i+1;
if(j < array.length && array[i] > array[j]){
count = j;
break;
}
}
//找到下标后,分为两部分,count 后面的移到arrayb中,然后将count前面
//的再移到后面
for(int i = 0; i < arrayb.length;i++) {
//移动后面的
for(int k = count; k < arrayb.length && i < arrayb.length; k++) {
arrayb[i] = array[k];
i++;
}
//移动前面的
for(int k = 0; k < count && i < arrayb.length; k++){
arrayb[i] = array[k];
i++;
}
}
return arrayb[0];
}
public static void main(String[] args) {
int a[] = {3,4,5,1,2};
int m = new RotateNumber().minNumberInRotateArray(a);
System.out.println(m);
}
}