我有一串字符串。我必须用二进制搜索算法在字符串数组中找到一个char字符串。如果有这一个字符串,则函数必须返回位置并返回true,否则此函数必须返回数组中插入字符串的位置,并返回false。 我有地方的错误,但我不知道在哪里((插入字符串的二进制搜索。错误在哪里?
例子:
bool Binary_search (char * arr_strings[], int & position, const char * search_string)
{
int start = 0 ;
int end = 10 - 1; // arr_strings [10]
int for_compare;
int middle;
while (start <= end)
{
middle = (start + end)/2;
for_compare = strcmp (arr_strings[middle], search_string );
if (for_compare > 0)
{
start = middle + 1;
}
else if (for_compare < 0)
{
end = middle - 1;
}
else
{
// if search_string is found in array, then function return position in array of strings and return true
position = middle;
return true;
}
}
// if search_string is not found in array, then function must return position for insert string and return false
position = middle;
return false;
}
我觉得'char * arr_strings []'应该是'char arr_strings []'开始的,但这取决于您如何调用Binary_search。 – 2013-04-09 01:12:43
问题是什么? – Arun 2013-04-09 01:13:37
@stardust_不,不应该。 – 2013-04-09 01:15:39