二分查找,判断进入左边分支还是右边分支由A[begin] A[mid] A[end])三个元素的关系决定(就如果给定元素二分查找中 进入左或右是由 给定元素和A[mid]关系决定的)
复杂度0(lgn)
public class CircleOrderFindMin {
public static void main(String[] args) {
int [] a = {7,8,9,2,3,4,5};//循环增序数组
int result = findMin(a);
System.out.println(result+" "+a[result]);
}
public static int findMin(int[] A){
int result =0 ;
int begin = 0;
int end = A.length-1;
int mid ;
while(begin<=end ){
mid = (begin+end)/2;
if(A[begin]<=A[mid]&&A[mid]<=A[end]){
result = begin;
break;
}
else if(A[mid]>=A[end]&&A[mid]>=A[begin]){
//在右半部
begin = mid+1;
}
else if(A[mid]<=A[end]&&A[mid]<=A[begin]){
//在左半部
end = mid;
}
}
return result;
}
}