c - C中字符串数组的二分查找

标签 c binary-search

我想用 C 语言编写一个字符串数组的二分搜索。

我已经编写了这段代码,它编译时没有错误,但当我尝试搜索时,它没有给出任何结果。任何帮助将不胜感激。

字符串是一个定义类型。很抱歉一开始没有澄清这一点。

//Looks up word s, in dictionary.
bool lookup(string s)
{  
    int min = 0;
    int max = dictionary.size - 1;
    int mid;
    bool found = false;

    while (min <= max && !found)
    {
        mid = (min + max) /2;
        if (dictionary.words[mid].letters == s)
            found = true;
        else if (dictionary.words[mid].letters > s)
            max = mid -1;
        else
            min = mid + 1;
    }
    return found;
}

最佳答案

C中的String只是char数组,由于使用==比较数组只是比较起始地址,所以需要使用库函数strcmpstring.h 中比较数组的内容。就像这样:

if (strcmp(dictionary.words[mid].letters, s) == 0)

编辑

我发现尽管有 c 标记,但您还是有某种 string 类型。这是 C 还是 C++?

关于c - C中字符串数组的二分查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14195762/

相关文章:

python - 两个表之间的非标准交互以避免非常大的合并

c++ - 当我使用函数指针变量消失

c - c崩溃有多严重?

c - 这个 C 程序不工作

binary-search - 我们可以使用线性搜索而不是二分搜索来查找插入位置,而不会产生任何显着的运行时间损失吗?

algorithm - Binary Search 可以/Is Binary Search 是一种贪心算法吗?

c - 使用 Memcpy 将一些 Char* 附加到包含 Char* 的缓冲区

将 C 代码转换为 MIPS 汇编语言

algorithm - 如何从逻辑上解释二进制搜索的任何变体

使用比较器的 C# 对象列表二进制搜索