二分法
前提:必须按照升序排列好。
含义:给出有序的数组之后,先找到数组中间下标,然后获取中间值。以中间值为中心,分为两部分:左边数据和右边数据。用户给的值先判断值是否等于中间值,等于则返回此下标。不等于,判断此值是大于中间还是小于中间值,如果大于中间值往右边找,反之往左边找。
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;
}
}
}
}
}