『排序算法』二、二分查找-简单易懂

二、二分查找

只对有序的数组才能进行二分查找

  • 通过不断更新 start 和 end 的值,进行 middle 数据的更新,从而找到数据

  • 过程模拟

    • 每次查找都会将要查找的数与middle的值进行比较,从而确定下一个比较范围,最终找到数据

    在这里插入图片描述

  • 代码实现如下:

public class Main {
    public static void main(String[] args) {
        
        int[] arr = {1,4,12,34,67,87,99,124};
        int number = 99; // 要查找的数据

        int start = 0;
        int end = arr.length-1;
        int middle ;
        
        int count = 0; // 计数器,记录查找数据所需的次数
        
        while(start <= end){ // start 不可能大于 end
            count++;
            middle = (start + end)/2; // 每次循环都必须重新计算middle的值

            if (number < arr[middle]){ // 如果要查找的数 小于 中间值
                end = middle - 1; // 改变查找区间(start不变,end变为middle - 1的位置(middle位置数据已经比较过))
            }

            if (number > arr[middle]){ // 如果要查找的数 大于 中间值
                start = middle + 1; // 改变查找区间(start变为middle + 1的位置(middle位置数据已经比较过),end不变)
            }

            if (number == arr[middle]){ // 找到数据,结束循环
                System.out.println("数据" + number + "已找到!共查找了"+ count + "次!");
                return; 
            }
        }
        
        System.out.println("没有找到要查找的数据!");
    }
}

版权声明:本文为qq_45958469原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。