我在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
...
答案 0 :(得分:5)
二分搜索需要对输入集合(在您的情况下为数组)进行排序,在此情况并非如此。
更改:
a[6] = {10, 21, 32, 35, 43, 54};
对此:
end=5
这是数组的排序版本。
此外,更改:
end=6,
对此:
end
因为mid=round(mid);
应该等于数组的大小-1,然后再进入循环(如pseudocode所示)。
PS:不需要build.gradle
,因为整数除法的结果也将是整数。