I have a binary search function I am passing a pointer character array, the length of that array, a search pointer character array and another counter for something else.
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;
}
From here, going through the code by hand seems to make me want to think it should work fine, however it doesn’t. I think I’m getting thrown off somewhere along the lines of my pointers and how I’m referring to them so the wrong data is being compared.
I’ve looked at it for too long now… really need some help here.
It is not very clear what is being searched in what. But I’m guessing that you are searching for a character in a sorted character array. If that is the case, you can’t use a
strcmp. Instead you can do: