[剑指offer]旋转数组的最小数字

[剑指offer]旋转数组的最小数字
思路:
数组实际是两组有序序列,先用两个指针分别指向头和尾,如果左大于右,说明较大的数列在左边,用middle指向中间的值,如果中间值大于left,就将left设为中间值,如果中间值小于right,就将right设为中间值,最后中间值即为最小值
实现:

import java.util.ArrayList;
import java.util.*;
public class Solution {
    public int minNumberInRotateArray(int [] array) {
        if(array.length==0)return 0;
        int left=0;
        int right=array.length-1;
        int middle=-1;
        while(array[left]>=array[right]){
            if(right-left==1){
                middle=right;
                break;
            }
            middle=left+(right-left)/2;
            if(array[middle]>=array[left]){
                left=middle;
            }
            if(array[middle]<=array[right]){
                right=middle;
            }
        }
        return array[middle];
    }
}