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

时间:2013-12-08 11:48:26

标签: 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。我不知道如何扩展功能来检查用户输入的所有字母。谢谢。

1 个答案:

答案 0 :(得分:2)

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