У меня есть функция бинарного поиска. Я передаю массив символов указателя, длину этого массива, массив символов указателя поиска и другой счетчик для чего-то еще.
int binarySearch(char* charArray, int len, char* searchItem, int counter)
{
int position;
int begin = 0;
int end = len-1;
int cond =0;
while(begin <= end)
{
position = (begin + end)/2;
// searchItem is a pointer array and the value I want to compare to is
// at the index of counter (determined outside of this function)
if((cond = strcmp(&charArray[position], &searchItem[counter])) == 0)
{
return position;
}
else if(cond < 0){
begin = position + 1;
}
else
end = position - 1;
}
return -1;
}
Отсюда, просмотр кода вручную заставляет меня думать, что он должен работать нормально, однако это не так. Я думаю, что меня сбивают с толку где-то в русле моих указателей и того, как я на них ссылаюсь, чтобы сравнивать неверные данные.
Я смотрел на это слишком долго ... мне здесь нужна помощь.