使用char数组的C++二进制搜索

C++ binary search with char array

本文关键字:二进制 搜索 C++ char 数组 使用      更新时间:2023-10-16

所以我有竞争对手的结构。我使用二进制搜索来按竞争对手的姓氏进行搜索。这是代码:

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;}