我在理解如何对char进行二进制搜索时遇到问题。我必须搜索智能手机的名称。我有这个:

typedef struct smartphone {
    char name[50];
    double weight;
} smartphone;

smartphone smartphone[50];
char smartphone_searched = "Xperia U";


因此,我必须对名称“ Xperia U”进行二进制搜索。有什么建议么?

最佳答案

首先,您需要根据智能手机的名称对数组进行排序(以使用二进制搜索),如下所示:

for(int i=0; i<49; i++)
{
    int minIndex = i;
    for(int j=i+1; j<50; j++)
    {
        if(strcmp(smartphone[i].name, smartphone[j].name) > 0)
            minIndex = j;
    }
    smartphone tmp = smartphone[i];
    smartphone[i] = smartphone[minIndex];
    smartphone[minIndex] = tmp;
}


然后,您将使用使用strcmp的二进制搜索逻辑来找到答案。

关于c - C:二进制搜索Char(名称),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28279011/

10-11 15:55