思想:
要求
1.必须采用顺序存储结构
2.必须按关键字大小有序排列。
步骤
二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x.
代码:
private static int find(int[] a, int value) {
int l = 0;
int r = a.length - 1;
//左边小于右边
while (l < r) {
//找到中间的数据
int mid = (l + r) >> 1;
//与查找的数值进行比较比较
if (a[mid] > value) {
r = mid - 1;
} else if (a[mid] < value) {
l = mid + 1;
} else
return mid;
}
return -(l + 1);
}