说一下二分查找

Posted 小IT大金融

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了说一下二分查找相关的知识,希望对你有一定的参考价值。

二分查找作为最经典的查找算法,在面试过程中经常被问到,但是从面试官的角度来看,能把二分查找写的很标准并没有错误的面试者寥寥无几。

今天就来简单回顾下二分查找

二分查找的前提是数据有序(假设升序),查找的基本思想,其实可以见名知意,就是把数据二分,判断待查找数据和分组后的之间数据是否一致,如果是,则直接返回中间数据;如果查找数据比中间数据大,说明查找数据在右半边,则需要更新下次查找区间为右半部分,反之,更新下次查找区间为左半部分。

画个图简单说明:

有了图,代码就很容易理解了。

public class BinarySearch {
   public static int search(int[] array, int value) {
       if(array == null || array.length == 0) return -1;
       int low = 0, high = array.length - 1; //high必须是length - 1
       while (low <= high) {       //必须要有等于
           int mid = (low + high) >>> 1;
           if (value == array[mid]) return mid;
           if (value > array[mid]) low = mid + 1;
           else high = mid - 1;
       }
       return -1;
   }
   public static void main(String[] args) {
       String input = "0, 0, 1, 3, 5";
       String[] array = input.trim().split(",");
       int[] data = new int[array.length];
       for (int i=0; i<data.length; i++) {
           data[i] = Integer.parseInt(array[i].trim());
       }
       int index = search(data, 5);
       System.out.println(index);
   }
}


以上是关于说一下二分查找的主要内容,如果未能解决你的问题,请参考以下文章

每周算法小知识之二分查找

python实现二分叉查找

面试中如果这样写二分查找!

小兔崽通俗易懂-二分查找

二分?三分!

[算法分析]二分查找细节分析与技术要点