java二分查找算法的实现过程:

package arithmetic;

/**
 * @author JasonLee
 * @description java的二分查找(折半查找),前提是数组中的数据是有序的
 * 思想:搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,
 * 则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,
 * 则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。
 */
public class DichotomyQuery {
    public static void main(String[] args) {
        int arr[] = {1,2,3,4,5,6,7,8};
        int i = binSearch(arr, 6);
        System.out.println(i);
    }


    public static int binSearch(int arr[],int key){
        // 中间的位置
        int mid = arr.length / 2;
        if(arr[mid] == key){
            return mid;
        }
        // 开始的位置
        int start = 0;
        // 结束的位置
        int end = arr.length - 1;
        while (start <= end){
            // 中间的位置
            mid = (end - start) / 2 + start;
            // 如果输入的数字小于中间的数字,就从中间的位置往前面找
            if(key < arr[mid]){
                end = mid - 1;
                // 如果输入的数字大于中间的数字,就从中间的位置往后找
            }else if(key > arr[mid]){
                start = mid + 1;
            }else {
                return mid;
            }
        }
        return -1;
    }
}