无法找出二进制搜索算法出了什么问题

时间:2018-06-19 12:06:01

标签: c algorithm runtime-error binary-search

我在C语言上尝试了这种(二进制搜索)算法,其功能是在短时间内从一堆数字中查找一个数字。这是一种非常流行的技术。您也可以在Google上阅读有关内容。对我来说,它不适用于54和35,即最后两个数字数组。每当我要搜索这两个数字时,它都会显示“找不到项目”。对于其余数字,即数组的前4个数字,它可以正常工作。

year month foo amount
2000 1     A   0.0
2000 2     A   0.1
2000 3     A   0.2
...
2000 6     A   0.6      // exact value
2000 7     A   0.633   
...  
2001 4     A   0.9333
2001 5     A   0.9667
2001 6     A   1.0     // exact value
2001 7     A   0.91667
2001 8     A   0.8333
...
2002 6     A   0.0  // exact value
...

1 个答案:

答案 0 :(得分:5)

二分搜索需要对输入集合(在您的情况下为数组)进行排序,在此情况并非如此。

更改:

a[6] = {10, 21, 32, 35, 43, 54};

对此:

end=5

这是数组的排序版本。

此外,更改:

end=6,

对此:

end

因为mid=round(mid);应该等于数组的大小-1,然后再进入循环(如pseudocode所示)。


PS:不需要build.gradle,因为整数除法的结果也将是整数。