数组的二分法查找数据

使用前提
  • 查找的数组必须是有序的
public class ArrayForTowWayMethod {

    public static void main(String[] args) {
    
        int[] arr = {-95,-55,-2,10,34,52,64,75,80};             //被查找的数组

        int head = 0;        //初始位置的索引
        int end = arr.length-1;       //结束位置的索引
        int dest = 10;            //查找的数
        boolean isFlag = true;        //用来判断是否在数组中找到数据的标识

        while (head < end){
            int middle = (head+end)/2;            //数组的正中间位置的索引

            if (arr[middle] == dest){    //判断数组正中间的数与要查找的数是否相等
                System.out.println("查找的数字的位置在第"+(middle+1)+"位");
                isFlag = false;                //当标识为false时表示在数组中查找到相应的数
                break;                //结束循环
            }else if (arr[middle] < dest){          //当中间的数小于要查找的数时
                head = middle + 1;        //初始位置调整到中间位置的后一个位置
            }else if (arr[middle] >dest){    //当中间位置的数大于要查找的数时
                end = middle - 1;    //结束位置调整到中间位置的前一位
            }
        }
        if (isFlag == true){    //当标识为true时,标识未在数组中找到该数
            System.out.println("该查找数字不在被查找的数组中!");
        }
    }
}