Я создаю вектор с 1000 элементами, значением элементов является сам индекс V [100] = 100, V [50] = 50 и т. Д.
Когда я вызываю двоичный поиск по значениюон должен вернуть мне индекс, что само по себе так двоичный_поиск (вектор, начало, конец, 50) должен вернуть мне 50, но возвращает 30. Я попытался отладить с помощью GDB, но не могу найти ничего неправильного.
Код:
int rbb(int *v, int left, int right, int val)
{
int mid = (left + right) / 2; //middle element
if (right < left) //stop codition, pointers shifted
return -1;
if (val == v[mid]) //found value
return mid;
if (val > v[mid]) //value is on vector right portion
rbb(v, mid+1, right, val);
if (val < v[mid]) //value is on vector left portion
rbb(v, left, mid-1, val);
}
int main ()
{
int v[1000];
for (int i = 0; i < 1000; i++)
v[i] = i;
int x = rbb(v, 0, 999, 300);
printf("%d", x);
}