3 回答
TA贡献1934条经验 获得超2个赞
为什么不充分利用二分搜索和线性搜索呢?使用二进制搜索,获得的指数的你的电话号码的发生,然后线性搜索从那里后发现先发生:
int[] A = { 10, 20, 21, 24, 24, 24, 24, 24, 30, 40, 45 };
int key = 24;
int idx = Arrays.binarySearch(A, key);
while (idx > 0) {
if (A[idx - 1] != key)
break;
--idx;
}
if (idx < 0)
System.out.println("Key " + key + " not found");
else
System.out.println("First index of key " + key + " is " + idx);
TA贡献1863条经验 获得超2个赞
double[] A = { 10, 20, 21, 24, 24, 24, 24, 24, 30, 40, 45 };
int key = 24;
int idx = -(Arrays.binarySearch(A, key - 0.5) + 1);
if (A[idx] != key)
System.out.println("Key not exist!");
else
System.out.println("First occurance of key is " + idx);
二分查找是查找数字的出现,如果没有找到则返回数字的索引,如果数字将被添加到排序列表中。
添加回答
举报