旋转数组的最小数字

来源:互联网 发布:网络覆盖方案 编辑:程序博客网 时间:2024/06/06 22:45

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减序列的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。

public int minNumberInRotateArray(int [] array) {if(array==null||array.length==0){              return 0;          }          int len=array.length;          int low=0;          int high=len-1;          if(array[low]<array[high]){//if the array is not shifted actually,e.g. {1,2,3,4,5}              return array[low];          }          int mid=0;          while(low<=high){              mid=(low+high)/2;              if(mid==low){//if there are only two elements left                  return array[low]<=array[high]?array[low]:array[high];              }            if(array[mid]<array[mid-1]&&array[mid]<array[mid+1])            {            return array[mid];            }            if(array[mid]>=array[low]&&array[low]<=array[low+1]){                  low=mid;              }else{                  high=mid;              }          }          return array[mid];}



1 0
原创粉丝点击