В настоящее время я пытаюсь использовать бинарный поиск. Я не хочу, чтобы он возвращал -1, если он ничего не находит, я просто хочу, чтобы он вернул следующее наилучшее из возможных решений моей цели. Теперь по какой-то странной причине мои операторы if не улавливаются, и я не знаю почему. Единственное, о чем я думаю, это, может быть, сфера? Но я не совсем уверен, работает ли эта функция в c, и я забыл небольшую деталь.
int binary_search(int list[][4], int bottom, int top, int hit)
{
printf("bottom: %d top %d \n", bottom,top);
if (bottom > top)
{
if (list[top][0]<= hit && list[top][1] >= hit)
return top;
else if (list[bottom][0] <= hit && list[bottom][1] >= hit)
return bottom;
}
int middle = (top+bottom)/2;
if (hit < list[middle][0])
return binary_search(list, bottom, middle-1, hit);
else if (hit > list[middle][0])
return binary_search(list, middle+1, top, hit);
else if (hit == list[middle][0])
return middle;
}