一、思路
核心:不断二分缩小查找范围。
二分查找又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。
二、代码
java
public class BiSearchTest {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9};
System.out.println(biSearch(array, 1));
System.out.println(biSearch(array, 3));
System.out.println(biSearch(array, 9));
}
public static int biSearch(int[] array, int a) {
int left = 0;
//注意:是长度减一
int right = array.length - 1;
int result = -1;
while (left <= right) {
//取中间位置
int middle = (left + right) / 2;
System.out.println("判断位置下标:" + middle);
if (a == array[middle]) {
result = middle;
break;
} else if (a < array[middle]) {
//向左查找
right = middle - 1;
} else {
//向右查找
left = middle + 1;
}
}
return result;
}
}