Java算法之二分法

二分法

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

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

Java代码:

/**
 * 
* 类说明: 二分法查找数组下标 * 作者: Guo.shiLin * 日期: 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; } } } } }

 

你可能感兴趣的:(算法,Java)