C# Array.BinarySearch 问题

发布于 2024-08-10 04:41:51 字数 259 浏览 7 评论 0原文

谁能解释为什么会发生这种情况? 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:

Code http://www.freeimagehosting.net/uploads/555fef4560.jpg

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

故人爱我别走 2024-08-17 04:41:51

你事先对数组进行排序了吗? 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.

如若梦似彩虹 2024-08-17 04:41:51

从图中可以看出,数组有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, use BinarySearch(0, num, 175)

写下不归期 2024-08-17 04:41:51
  1. 确保数组已排序
  2. 确保您正在搜索的对象与数组中的对象具有相同的类型。它有助于使用通用版本:

    Array.BinarySearch(..)

  1. Make sure the array is sorted
  2. 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(..)

记忆消瘦 2024-08-17 04:41:51

如果数组已排序,您可以使用特定于类型的版本来确保输入参数正确:

 int[] array = new int[] { 1, 3, 4, 5, 175, 200, 300, 400 };
 int index = Array.BinarySearch<int>(array, 175);

如果输入数组或搜索参数不是 int 类型,您将收到编译错误。

You could use Type specific version to make sure your input parameters are correct if the array is sorted:

 int[] array = new int[] { 1, 3, 4, 5, 175, 200, 300, 400 };
 int index = Array.BinarySearch<int>(array, 175);

You'll get a compilation error if the input array or search parameter is not of type int.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文