public class BinarySearchClass 
{  
  
    public static int binary_search(int[] array, int value)  
    {  
        int beginIndex = 0;// 低位下标  
        int endIndex = array.length - 1;// 高位下标  
        int midIndex = -1;  
        while (beginIndex <= endIndex) {  
            midIndex = beginIndex + (endIndex - beginIndex) / 2;//防止溢出  
            if (value == array[midIndex]) {  
                return midIndex;  
            } else if (value < array[midIndex]) {  
                endIndex = midIndex - 1;  
            } else {  
                beginIndex = midIndex + 1;  
            }  
        }  
        return -1;  
        //找到了,返回找到的数值的下标,没找到,返回-1         
    }  
  
  
    //start 提示:自动阅卷起始唯一标识,请勿删除或增加。  
    public static void main(String[] args)  
    {  
        System.out.println("Start...");  
        int[] myArray = new int[] { 1, 2, 3, 5, 6, 7, 8, 9 };  
        System.out.println("查找数字8的下标:");  
        System.out.println(binary_search(myArray, 8));          
    }  
    //end //提示:自动阅卷结束唯一标识,请勿删除或增加。  
}    
原文:http://www.cnblogs.com/yaohaitao/p/5439738.html