码迷,mamicode.com
首页 > 其他好文 > 详细

二分法查找

时间:2017-04-23 18:02:28      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:oid   需要   相等   索引   []   二分   pre   代码   strong   

算法描述:

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

  主要思想是:设查找的数组区间为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

  

二分法查找

标签:oid   需要   相等   索引   []   二分   pre   代码   strong   

原文地址:http://www.cnblogs.com/bosongokay/p/6752893.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!