1

谁能解释为什么会这样?IE。即使 175 存在于位置 7 的数组中,array.binarysearch 是否返回负值?

请看这张图片:

代码 http://www.freeimagehosting.net/uploads/555fef4560.jpg

4

4 回答 4

9

您是否事先对数组进行了排序?BinarySearch期望对数组进行排序。否则,它可能会返回不正确的结果。

此外,您应该检查>= 0,而不是> 0。该元素可以出现在索引 0 处。

于 2009-11-07T20:37:01.970 回答
1

从图片中,数组有 220 个元素,您只显示前 7 个。所有 220 个元素都必须排序,否则 BinarySearch 将失败。

例如,如果您只使用第一个num元素,请使用BinarySearch(0, num, 175)

于 2009-11-07T20:38:24.183 回答
0
  1. 确保数组已排序
  2. 确保您要搜索的对象与数组中的对象类型相同。它有助于使用通用版本:

    Array.BinarySearch(..)

于 2009-11-07T20:38:10.860 回答
0

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

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

如果输入数组或搜索参数不是 int 类型,则会出现编译错误。

于 2009-11-07T20:48:08.657 回答