二分法查找

Posted 牧羊人的世界

tags:

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

算法描述:

  当数据量很大适宜采用该方法。采用二分法查找时,数据必须是排好序的。

  主要思想是:设查找的数组区间为array[low, high],中间索引 middle = (low + high)/2 ,设需要查找的数值为 value.  

    step1: 比较 value == array[middle],若相等,则返回索引:middle;若不相等,则进行下一步

           step2:若 value < array[middle] ,则 high = middle - 1;

           step3:若 value > array[middle],则 low = middle + 1;

           step4: middle = (low + high)/2;

           step5:当 low <= high,重复 step1~step4,直到找到,否则退出

Java 代码:

public class Test {
    public static int binary(int array[], int value) {
        int low = 0;
        int high = array.length - 1;
        int middle  = 0;
        while(low <= high) {
            middle = (low + high) / 2;
            if(value == array[middle]){
                return middle;
            }
            if(value > array[middle]) {
                low = middle + 1;
            }
            if(value < array[middle]) {
                high = middle - 1;
            }
        }
        	return -1;
    	}
    public static void main(String[] args)
    {
        int arr[] = {1, 4, 5, 12, 15, 26, 37, 48, 59};
        int value = binary(arr, 12);
        System.out.println(value);
    }
}
// 运行结果:3

  

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

二分查找常见套路与分析

Java实现二分查找具体实现代码

java 二分查找法

代码题(12)— 二分查找

二分查找代码

PHP实现二分查找算法(代码详解)