题目
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.
思路
第一个思路:最简单的是直接顺序查找,那么复杂度是O(n);
第二个思路:看到题目“递增排序的数组”,那么我们利用这一特性,类似二分法,不断的减少,复杂度是O(log2 n)。
分析旋转数组,发现,前面的元素旋转到后面,则最小值总是在最大值的右边。
用while循环,终止条件是begin+1<end,之后返回arr[end]
代码
这是第二个思路的代码
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] arr= {5,1,2,3,4};
int res =min(arr);
System.out.println(res);
}
stat