谁能送给我一个2分叉查询方法

谁能送给我一个2分叉查询方法

public class BinarySearch {
/**
* 二分查找算法
*
* @param srcArray 有序数组
* @param key 查找元素
* @return key的数组下标,没找到返回-1
*/

public static void main(String[] args) {
int srcArray[] = {3,5,11,17,21,23,28,30,32,50,64,78,81,95,101};

System.out.println(binSearch(srcArray, 0, srcArray.length - 1, 81));

}

// 二分查找递归实现   
public static int binSearch(int srcArray[], int start, int end, int key) {   
    int mid = (end - start) / 2 + start;   
    if (srcArray[mid] == key) {   
        return mid;   
    }   
    if (start >= end) {   
        return -1;   
    } else if (key > srcArray[mid]) {   
        return binSearch(srcArray, mid + 1, end, key);   
    } else if (key < srcArray[mid]) {   
        return binSearch(srcArray, start, mid - 1, key);   
    }   
    return -1;   
} 

// 二分查找普通循环实现   
public static int binSearch(int srcArray[], int key) {   
    int mid = srcArray.length / 2;   
    if (key == srcArray[mid]) {   
        return mid;   
    }   

    int start = 0;   
    int end = srcArray.length - 1;   
    while (start <= end) {   
        mid = (end - start) / 2 + start;   
        if (key < srcArray[mid]) {   
           end = mid - 1;   
        } else if (key > srcArray[mid]) {   
            start = mid + 1;   
        } else {   
            return mid;   
        }   
    }   
    return -1;   
} 

}

同学你敢不敢google一下,网上到处都有啊
http://www.google.com.hk/search?sourceid=chrome&ie=UTF-8&q=%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE+%E7%AE%97%E6%B3%95+%E5%88%86%E6%9E%90

天知地知google百度知

网上很多东西都有,就看你舍不舍得花时间了。 public static void main(String[] args) {

int[] ints = { 2, 23, 53, 64, 158, 221, 260, 278, 651, 1564, 2355 };

System.out.println("the position is:"

+ new BinarySearch().find(ints, 651));

}

public int find(int[] values, int key) {  
    int lowerBound = 0;  
    int upperBound = values.length - 1;  
    int curIn;  
    while (true) {  
        curIn = (lowerBound + upperBound) / 2;  
        if (values[curIn] == key) {  
            return curIn;  
        } else if (lowerBound > upperBound) {  
            return values.length;  
        }  
        if (values[curIn] < key) {  
            lowerBound = curIn + 1;  
        } else {  
            upperBound = curIn - 1;  
        }  
    }  
}