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