查找-二分法查找

二分法查找,递归实现

    public static void main(String[] args){
        int arr[] = {2,12,16,17,19,22,35,37};
        int index = BinarySearch(35,0,arr.length,arr);
        System.out.println(index);
    }

    public static int BinarySearch(int elem,int low,int high,int arr[]){
        //二分法查找,递归实现
        //对于有序集合,如果无序先进行排序
        if(low > high) return -1;
        int min = (low + high)/2;
        if(arr[min] == elem) return min;
        if(arr[min] > elem) return BinarySearch(elem,low,min-1,arr);
        if(arr[min] < elem) return BinarySearch(elem,min+1,high,arr);
        return -1;
    }

二分法查找实现

	
	
		//二分法查找实现
        int arr[] = {2,12,16,17,19,22,35,37};

        int temp = 36;
        int start = 0;
        int end = arr.length;
        int count = 0;
        while(true){
            count ++;
            if(count > arr.length){
                System.out.println("没有找到这个数");
                 break;
            }
           int min = (start + end)/2;
           if(arr[min] > temp){
               end = min;
           }else if(arr[min] < temp){
               start = min;
           }else{
               System.out.println(min);
               break;
           }
        }
posted @ 2013-05-20 22:41  oyiya  阅读(207)  评论(0)    收藏  举报