简单算法 之 二分查找

二分查找

算法介绍

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

算法原理

拿到数组起始下标(left)和结束下标(right)加起来除以二,就是这个数组的中间下标(mid),然后使用需要查找的这个数去与中间下标上的数字相比,比中间下标的数大,就把left 赋值为mid+1,反之就更改right 为 mid-1。重复此循环知道找到这个数为止。 一次运算排除一半的数字,就不用for循环一个一个找,效率更高,但是使用折半查找必须要是有序的。

代码块

public class DichotomyQuery {
          
   
    public static void main(String[] args) {
          
   
        int[] arr = {
          
   1,2,3,4,5,6,7,8,9};
        int left = 0,rigth = arr.length-1;
        int mid = 0;
        int q = 6;
        while (left<rigth){
          
   
            mid = (rigth+left)/2;
            if(q>arr[mid]){
          
   
                left = mid + 1;
            }
            if(q<arr[mid]){
          
   
                rigth = mid -1;
            }
        }
        System.out.println(rigth);
    }
}

运行结果

经验分享 程序员 微信小程序 职场和发展