所以我有竞争对手的结构。我使用二进制搜索按姓氏搜索竞争对手。这是代码:
int binary(tekmovalec abc[], int n, char x[20])
{
int start = 0;
int end = n-1;
int a= strlen(x);
while(start <=end)
{
int mid = (start+end)/2;
if(abc[mid].surName[0]== x[0])
{
print(tekmovalci[mid]);
return mid;
}
else if(x[0]<abc[mid].surName[0])
{
end = mid -1;
}
else
{start = mid +1;}
}
return -1;
}
我有一个问题,该函数只检查姓氏和输入数组的首字母,所以如果姓氏是 Obrien,并且用户输入是“Obrb”,它会打印 Obrien。我不知道如何扩展功能来检查用户输入的所有字母。谢谢。
最佳答案
使用strcmp
比较循环中的字符串。
int res = strcmp(x, abc[mid].surName);
if(!res)
{
print(tekmovalci[mid]);
return mid;
}
else if(res < 0)
{
end = mid -1;
}
else
{start = mid +1;}
关于使用 char 数组的 C++ 二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20453039/