旋转数组的最小数字(利用二分查找算法)

当数组中存在重复的数则不能使用

import java.util.*;
    
    public class Main {
    	static int min(int[] arr) {
    		int begin = 0;
    		int end = arr.length - 1;
    		
    		if(arr[begin] < arr[end]) return arr[begin];
    		
    		while(begin + 1 < end) {
    			int mid = begin + ((end - begin) >> 1);	
    			if(arr[mid] >= arr[begin]) {	//左侧有序(最小数藏在无序的一边)
    				begin = mid;
    			}else {
    				end = mid;
    			}
    		}
    		return arr[end];
    	}
    	public static void main(String[] args) {
    		
    		int[] arr = {5,6,7,1,2,3};
    		int res = Main.min(arr);
    		System.out.println(res);
    		
    	}
    }

猜你喜欢

转载自blog.csdn.net/weixin_41458531/article/details/86624690