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

标签 c++ arrays binary-search

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

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/

相关文章:

c++ - 在 C++ 上进行二进制搜索并进行比较

c++ - 不正常的退出会破坏 C++ 内存分配器吗?

C++ 加密 ascii 值打印数组中的返回键

javascript - 在 JavaScript 中重写数组字面量

javascript - javascript中重复的数组中的子字符串二分搜索

c - 如何修复 C 中字符串数组的二分搜索

c++ - 关于虚函数,错误

c++ - 未定义对 avr-g++ 中元素的引用

c++ - C++ 头文件中空引用驱动的段错误

Javascript - 嵌套循环和索引