public class Search {
public static void main(String[] args) {
// 测试用例
int[] arr = { 2, 4, 5, 6, 8, 9, 12, 14, 23, 34, 46, 57, 68, 69, 78 };
int key = doSearch(arr, 69);// 查找69, 找到返回数组位置,否则返回-1
System.out.println(key);
}
private static int doSearch(int[] arr, int key) {
int start = 0;
// 因为数组下标从0开始,所以结尾是arr.length-1;
int end = arr.length - 1;
int middle = 0;
while (start <= end) {
// 每次没有找到时middle被重新赋值,并且用于之后的循环
middle = (start + end) / 2;
// 如果侍查找元素等于数组中间数,则直接返回数组下标
if (key == arr[middle]) {
return middle;
// 如果侍查找元素大于数组中间数,则将范围缩小到后一半
} else if (key > arr[middle]) {
start = middle + 1;
/**代码未完, 请加载全部代码(NowJava.com).**/
本文系作者在时代Java发表,未经许可,不得转载。如有侵权,请联系nowjava@qq.com删除。