Java算法之二分法

二分法

前提:必须按照升序排列好。

含义:给出有序的数组之后,先找到数组中间下标,然后获取中间值。以中间值为中心,分为两部分:左边数据和右边数据。用户给的值先判断值是否等于中间值,等于则返回此下标。不等于,判断此值是大于中间还是小于中间值,如果大于中间值往右边找,反之往左边找。

Java代码:

/**
 * <br>
 * <b>类说明: </b> 二分法查找数组下标
 * <b>作者:   </b> Guo.shiLin
 * <b>日期:   </b> 2018\7\23 0023
 *
 * @version 1.0
 */
public class ArraysTest {
    public static void main(String[] args) {
        int[] param = {12, 3, 34, 23};
        Arrays.sort(param);
        int value = 3;
        int low = 0;
        int middle;
        int cow = param.length;
        while (true) {
            middle = (low + cow) / 2;
            if (param[middle] == value) {
                System.out.println("与值对应的下标为:" + middle);
                return;
            } else if (low > cow) {
                System.out.println("超出范围");
                return;
            } else {
                if (param[middle] > value) {
                    cow = middle - 1;
                } else {
                    low = middle + 1;
                }
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/demo_gsl/article/details/81176180