任何人都可以解释为什么会这样吗? 即。即使在位置7的数组中存在175,array.binarysearch也会返回负值?
请看这张图片:
答案 0 :(得分:9)
你事先对阵列进行了排序吗? BinarySearch
期望对数组进行排序。否则,可能会返回错误的结果。
此外,您应该检查>= 0
,而不是> 0
。元素可以出现在索引0处。
答案 1 :(得分:1)
从图片中可以看出,数组是220个元素,你只显示第7个元素。所有220个元素必须排序,否则BinarySearch将失败。
例如,如果您只使用第一个num
元素,请使用BinarySearch(0, num, 175)
答案 2 :(得分:0)
确保要搜索的对象与数组中的对象的类型相同。它有助于使用通用版本:
Array.BinarySearch(..)
答案 3 :(得分:0)
如果数组已排序,您可以使用特定于版本的版本来确保输入参数正确:
int[] array = new int[] { 1, 3, 4, 5, 175, 200, 300, 400 };
int index = Array.BinarySearch<int>(array, 175);
如果输入数组或搜索参数的类型不是int。
,则会出现编译错误