Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
二进制搜索和排序-CS50查找pset3_C_Binary Search_Cs50 - Fatal编程技术网

二进制搜索和排序-CS50查找pset3

二进制搜索和排序-CS50查找pset3,c,binary-search,cs50,C,Binary Search,Cs50,在对CS50、pset3 find进行选择排序之后,我尝试实现一个二进制搜索 我觉得我的逻辑是正确的,但我不知道我的代码哪里错了。下面是我的代码 基本上,我认为我的逻辑基本上是正确的,但我也不太确定。我还是一个初学者,所以我有时会犯一些最简单的错误。 任何帮助都将不胜感激 功能错误 例如,它可以无限执行。假设n等于1。在这种情况下,最初是中点 将设置为0。如果值小于值[0],则再次由于该If语句 else if (value < values[midpoint]){ mid

在对CS50、pset3 find进行选择排序之后,我尝试实现一个二进制搜索

我觉得我的逻辑是正确的,但我不知道我的代码哪里错了。下面是我的代码

基本上,我认为我的逻辑基本上是正确的,但我也不太确定。我还是一个初学者,所以我有时会犯一些最简单的错误。
任何帮助都将不胜感激

功能错误

例如,它可以无限执行。假设n等于1。在这种情况下,最初是中点

将设置为0。如果值小于值[0],则再次由于该If语句

    else if (value < values[midpoint]){
    midpoint = ((0 + (midpoint-1))/2);
    }
    else if  (value > values[midpoint]){
    midpoint = (((midpoint+1) + (n-1))/2);
                                ^^^^^
    }

错误。

从报告的第一个错误开始。修好它。查看下一个错误是否也可以修复,但它们可能是第一个错误的后果。当你修复了你能修复的,重新编译,以同样的方式处理剩余的错误。谢谢你的留言。现在,我注意到了这一点,但我仍然很难理解如何解决这个问题。如果我将while循环条件设置为n>1,那么它应该可以解决问题,但事实并非如此——我没有设置正确的条件吗?@jameskwonley您应该关闭此问题并提出一个新问题,因为您的新更新代码。
    else if (value < values[midpoint]){
    midpoint = ((0 + (midpoint-1))/2);
    }
    else if  (value > values[midpoint]){
    midpoint = (((midpoint+1) + (n-1))/2);
                                ^^^^^
    }