java二分查找 找不到为什么错了
package com.my;
public class erfen {
// 被搜索数据的大小
private static final int size = 100;
public static void main(String[] args) {
// 创建动态数组
long date[] = new long[size];
// 添加测试数据
for (int k = 0; k < date.length; k++) {
date[k] = k;
System.out.println(date[k]);
}
// 要查找的数据 binaryFindTest(date,target)
long target = 4;
int a = binaryFindTest(date, target);
System.out.println(a);
}
// 二分法搜索实现
private static int binaryFindTest(long[] date, long target) {
// TODO Auto-generated method stub
// 定义start
int start = 0;
// 定义end
int end = date.length - 1;
// 定义中间变量 (start+end)/2
// 只要start<=end
while (start < end) {
int middleIndex = (start + end) / 2;
// 判断 中间那个数是否等于你要找的那个数 如果是 返回元素下标,
if (target == date[middleIndex]) {
return middleIndex;
}
// 如果target大于 以middleIndex为元素下标的元素
if (target >= middleIndex) {
start = middleIndex + 1;
} else {
end = middleIndex - 1;
}
}
return -1;
}
[解决办法]
// 只要start<=end
while (start <= end)
// 如果target大于 以middleIndex为元素下标的元素
if (target >= date[middleIndex])