二分法
前提:必須按照升序排列好。
含義:給出有序的數組之後,先找到數組中間下標,然後獲取中間值。以中間值爲中心,分爲兩部分:左邊數據和右邊數據。用戶給的值先判斷值是否等於中間值,等於則返回此下標。不等於,判斷此值是大於中間還是小於中間值,如果大於中間值往右邊找,反之往左邊找。
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;
}
}
}
}
}