好了,所以我给出的函数二进制搜索递归算法问题在C
int bin(int value, int size, int array[])
我应该内“[]数组”找到“价值”,但手头这里的问题是,在大多数情况下,我们沿着
int bin(int value, int max, int min, int array[])
递归线的东西,从逻辑上讲,是这部分容易得多由于我还可以通过我在,数量以及记忆的大小阵列。
int bin(int array[], int value, int min, int max)
{
if(max < min)
return -1;
else
{
int mid = min + (max - min)/2;
if(array[mid] > value)
return bin(array, value, min, mid-1);
else if(array[mid] < value)
return bin(array, value, mid+1, max);
else
return mid;
}
但是由于我只能传递1个整数,我该如何调整这个算法呢? 实质上,我只能做这样的事情,但我知道它不会在逻辑上起作用。有没有办法,我可以看到数组的大小?我试过了,但是这些数字并没有被正确处理。
int bin(int array[], int value, int size)
{
int mid = size/2;
if(array[mid] > value)
return bin(array, value, size-(size/2));
else if(array[mid] < value)
return bin(array, value, size+(size/2));
else
return mid;
}
请调整您的“家庭作业”标签等;你的约束肯定听起来像那样。提示:在C数组中实际上是指向底层数据类型的指针。所以你可以传递一个计算的参数'数组'到函数中。 – Adriaan 2012-08-13 11:55:59
@Adriaan:阵列不是指针。数组是数组。但是,不能将数组作为函数参数传递,并且在该上下文中,数组会衰减为指向第一个元素的指针。不过,这并没有改变数组的性质。 – 2012-08-13 12:00:53