Java编程题-二分法查找

二分法查找是建立在已经排序的基础之上的
在这个数组中找到 7 的下标:1, 3, 4, 5, 7, 8, 10

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class MyArrays {

public static void main(String[] args) {
int[] a = { 1, 3, 4, 5, 7, 8, 10 };
int destElement = 7;

int index = binarySearch(a, destElement);
System.out.println((index == -1) ? destElement + " 元素不存在!" : destElement + " 在数组中的下标为:" + index);

}

private static int binarySearch(int[] a, int destElement) {
int begin = 0;
int end = a.length - 1;

while (begin <= end) {
int mid = (begin + end) / 2;
if (destElement == a[mid]) {
return mid;
} else if (destElement < a[mid]) {
end = mid - 1;
} else if (destElement > a[mid]) {
begin = mid + 1;
}
}

return -1;
}
}