C# Array.BinarySearch 问题
谁能解释为什么会发生这种情况? IE。即使数组中位置 7 处存在 175,array.binarysearch 也会返回负值?
请查看此图片:
代码 http://www.freeimagehosting.net/uploads/555fef4560.jpg< /a>
Can anyone explain why this is happening?
ie. Even when 175 is present in the array at location 7, the array.binarysearch is returning a negative value?
Please see this image:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你事先对数组进行排序了吗?
BinarySearch
期望对数组进行排序。否则,可能会返回不正确的结果。另外,您应该检查
>= 0
,而不是>; 0 。该元素可以出现在索引 0 处。
Did you sort your array beforehand?
BinarySearch
expects the array to be sorted. Otherwise, it may return incorrect results.Also, you should check for
>= 0
, not> 0
. The element can be present at index 0.从图中可以看出,数组有220个元素,而你只显示前7个。所有220个元素都必须排序,否则BinarySearch将失败。
例如,如果您只使用前
num
元素,请使用BinarySearch(0, num, 175)
From the picture, the array is 220 elements and you only show the first 7. All 220 elements must be sorted, otherwise BinarySearch will fail.
If for instance you only use the first
num
elements, useBinarySearch(0, num, 175)
确保您正在搜索的对象与数组中的对象具有相同的类型。它有助于使用通用版本:
Array.BinarySearch(..)
Make sure the object you are searching for is of the same type as the objects int he array. It helps to use the generic version:
Array.BinarySearch(..)
如果数组已排序,您可以使用特定于类型的版本来确保输入参数正确:
如果输入数组或搜索参数不是 int 类型,您将收到编译错误。
You could use Type specific version to make sure your input parameters are correct if the array is sorted:
You'll get a compilation error if the input array or search parameter is not of type int.