在JAVA中:我正在尝试进行指数搜索,然后在列表的一部分上进行二进制搜索,但是我无法配置列表中的低位和高位,我最终会创建一个新数组来存储列表的那一部分,然后进行二分查找并调整索引以对应原始列表;它有效但很难有效 .
任何人都可以帮助找出正确的方法来做到这一点,而无需另外的阵列?
int[] binary_search = new int[(range_upper - range_lower + 1)];
int k_for_list = range_lower;
for(int k =0; k < binary_search.length; k++)
{
binary_search[k] = l2.getId(k_for_list);
k_for_list++;
}
int low = 0;
int high = binary_search.length - 1;
while(high >= low)
{
int middle = (low + high) / 2;
if(binary_search[middle] == l1.getId(i1))
{
result.addPosting(l1.getId(i1), l1.getScore(i1) + l2.getScore(middle + range_lower));
element_not_found = 1;
i2 = middle + range_lower;
}
if(binary_search[middle] < l1.getId(i1))
low = middle + 1;
else
high = middle - 1;
}
1 回答
你可以使用方法
创建列表视图而不是执行: