折半查找法(二分法)

/*
 折半查找法(二分法) :折半查找法使用的前提是数据必须 是有序的。
 
 */


public class Demo5 {

    public static void main(String[] args) {
        int[] arr = {12,15,17,19,30};
        int index = halfSearch(arr,0);
        System.out.println("idnex:"+ index);
    }
    
    public static int halfSearch(int[] arr,int target){
        int max = arr.length - 1;
        int min = 0;
        int mid = (max+min)/2;
        
        while(true){
            if(target>arr[mid]){
                min = mid+1;
            }else if(target<arr[mid]){
                max = mid-1;
            }else{
                return mid;
            }
            
            //重新计算中间值
            mid = (min+max)/2;
            
            //找不到
            if(max<min){
                return -1;
            }
            
        }
        
    }
    
}

posted @ 2017-02-22 14:41  iFat  阅读(515)  评论(0编辑  收藏  举报