C#Array.BinarySearch问题

时间:2009-11-07 20:32:15

标签: c# arrays binary-search

任何人都可以解释为什么会这样吗? 即。即使在位置7的数组中存在175,array.binarysearch也会返回负值?

请看这张图片:

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

4 个答案:

答案 0 :(得分:9)

你事先对阵列进行了排序吗? BinarySearch期望对数组进行排序。否则,可能会返回错误的结果。

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

答案 1 :(得分:1)

从图片中可以看出,数组是220个元素,你只显示第7个元素。所有220个元素必须排序,否则BinarySearch将失败。

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

答案 2 :(得分:0)

  1. 确保数组已排序
  2. 确保要搜索的对象与数组中的对象的类型相同。它有助于使用通用版本:

    Array.BinarySearch(..)

答案 3 :(得分:0)

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

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

如果输入数组或搜索参数的类型不是int。

,则会出现编译错误