【发布时间】:2015-03-26 16:58:52
【问题描述】:
所以我有一个二进制搜索代码,可以找到应该放置数字以保持排序顺序的位置。到目前为止,我已经在这个问题上待了一个半多小时,试图弄清楚这一点,这样我就可以继续推进了。
如果在数组中没有找到该值,但找到了应该放置的位置,我会在方法末尾返回什么值?基本上一个值表示该数字所属的索引在中间值的 +/- 1 范围内。
这里是二分搜索,我不想改变它,而只是寻找返回_____所在位置的变量。
private static int bsearch( int[] arr, int count, int key )
{
if (count==0) return -1;
int lo = 0, hi = count - 1, mid;
while(hi >= lo)
{
mid = (lo + hi) / 2;
if(arr[mid] == key) return mid;
if ( key < arr[mid] ) hi = mid-1;
else lo = mid+1;
}
return _____;
}
【问题讨论】:
-
这样想:如果搜索值高于你找到的最后一个mid,它应该是mid+1,对吧?如果它的下限不应该是中间-1?
标签: java arrays binary-search