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