c - 二分查找...这段代码有问题吗

标签 c algorithm search binary

我只包含了该功能。我正在尝试实现二分搜索,但由于某种原因它不起作用。我真正想确定的是算法是否正确。对我来说似乎很好......但可能我错了。我知道必须首先对算法进行排序,但这将在另一个函数中进行处理。算法是错还是对?由于某种未知的原因,程序挂起...我已经处理了所有标题等...我偏离了目标还是什么?谢谢。函数在 C 语言中。

bool search(int value, int values[], int n)
{
    int i;
    int begin = 0;
    int end = n-1;
    int middle = (begin + end)/2;

    for ( i = 0; middle <=end; i++)
        if (value == values[middle])
        {
            return true; 
            break;
        }
        else if (value > values[middle])
        {
            begin = values[middle +1];
        }
        else 
        {
            end = values[middle -1];
        }
    return false;
}

最佳答案

您不需要 i 上的循环.

您的循环将位于 beginend ,如while( begin < end )

取决于如何values[middle]values[begin] 比较和values[end] ,你必须调整begin ( begin = middle + 1; ) 或 end (end = middle - 1;)。当心边界情况!

关于c - 二分查找...这段代码有问题吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22775797/

相关文章:

c ->> 轮类运算符(operator)没有按预期工作

c - 结构元素测试为空

c - 信号量在 C 中不起作用。为什么?

C - 你如何根据操作系统忽略某些代码(所以一个源代码适合所有)

javascript - 从数组jquery中的子字符串中删除项目

java - 将列表划分为组的算法

algorithm - 找到向量中的最大距离

algorithm - 关于空间索引的好书/文章

java - .jpg.to 替代从图像关键字获取 URL

search - 有没有办法在不重新启动 Solr 服务器的情况下动态更新同义词文件?