我试图让这个递归二进制搜索正确,并得到了这么远。到目前为止,我可以让前半部分正确显示,但中间的右侧显示为好像它在左侧。我哪里错了?
Sheets("Sheets2").Range("A1").Offset(0, l - 1).PasteSpecial Paste:=xlPasteFormats
答案 0 :(得分:0)
这个代码不正确,有一个非常错误 - 您试图在某个固定数组中获取值的偏移量,但是您在此处操作该数组:
DF_A$ID <- unlist(by(DF_A, DF_A$Group_1, function(x) as.integer(factor(x$Group_2))))
你可以清楚地看到这个函数不起作用,因为如果在mid之后的第一个元素的情况下,array + mid + 1将返回0,而它应该返回: (INT)(大小/ 2)+1
我建议你通过&#39;开始&#39;并且&#39;结束&#39;范围变量到函数。
此文:
return binarySearch(**array+mid+1**, size-(mid + 1), searchValue);
BST中的T代表&#39; Tree&#39;,但您不创建任何树。
答案 1 :(得分:0)
代替这一部分:
if (array[mid] < searchValue)
{
return binarySearch(array+mid+1, size-(mid + 1), searchValue);
}
您可以使用:
if (array[mid] < searchValue)
{
int ans = binarySearch(array+mid+1, size-(mid + 1), searchValue);
if (ans == -1)
return -1;
return mid + ans + 1;
}