【发布时间】:2013-03-31 06:37:59
【问题描述】:
我有字符串数组。我必须通过二进制搜索算法在字符串数组中找到一个字符字符串。如果存在这个字符串,则函数必须返回位置并返回真,否则该函数必须返回在数组中插入字符串的位置和假。 我在某个地方有错误,但我不知道在哪里((
例子:
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。 -
问题/疑问是什么?
-
@stardust_ 不,不应该。
-
如果 arr_strings[] 中没有 search_string,则函数返回错误位置以将此字符串插入 arr_strings[]
-
@AlexeyFrunze 啊,我看到说得太快了。
标签: c++ algorithm sorting binary-search