C#Array.BinarySearch问题
有人能解释为什么会这样吗? 即,即使在位置7的数组中存在175,array.binarysearch是否返回负值 请看这张图片:C#Array.BinarySearch问题,c#,arrays,binary-search,C#,Arrays,Binary Search,有人能解释为什么会这样吗? 即,即使在位置7的数组中存在175,array.binarysearch是否返回负值 请看这张图片: 您是否事先对阵列进行了排序BinarySearch要求对数组进行排序。否则,它可能返回不正确的结果 另外,您应该检查>=0,而不是>0。元素可以出现在索引0处。您是否事先对数组进行了排序BinarySearch要求对数组进行排序。否则,它可能返回不正确的结果 另外,您应该检查>=0,而不是>0。该元素可以存在于索引0处 确保数组已排序 确保要搜索的对象与数组中的对象类
您是否事先对阵列进行了排序
BinarySearch
要求对数组进行排序。否则,它可能返回不正确的结果
另外,您应该检查
>=0
,而不是>0
。元素可以出现在索引0处。您是否事先对数组进行了排序BinarySearch
要求对数组进行排序。否则,它可能返回不正确的结果
另外,您应该检查>=0
,而不是>0
。该元素可以存在于索引0处
从图中可以看出,数组是220个元素,您只显示前7个元素。必须对所有220个元素进行排序,否则BinarySearch将失败
例如,如果您仅使用第一个
num
元素,请使用图片中的BinarySearch(0,num,175)
,数组为220个元素,您仅显示前7个元素。必须对所有220个元素进行排序,否则BinarySearch将失败
例如,如果只使用第一个
num
元素,请使用BinarySearch(0,num,175)
如果数组已排序,则可以使用特定于类型的版本来确保输入参数正确:
int[] array = new int[] { 1, 3, 4, 5, 175, 200, 300, 400 };
int index = Array.BinarySearch<int>(array, 175);
int[]数组=新的int[]{1,3,4,5,175200300400};
int index=Array.BinarySearch(Array,175);
如果输入数组或搜索参数不是int类型,则会出现编译错误。如果数组已排序,则可以使用特定于类型的版本来确保输入参数正确:
int[] array = new int[] { 1, 3, 4, 5, 175, 200, 300, 400 };
int index = Array.BinarySearch<int>(array, 175);
int[]数组=新的int[]{1,3,4,5,175200300400};
int index=Array.BinarySearch(Array,175);
如果输入数组或搜索参数不是int类型,则会出现编译错误。最好发布代码的相关部分,而不是图片。最好发布代码的相关部分,而不是图片。如果我无法对其进行排序,因为这会破坏元素的正确顺序,该怎么办?假设我有一个来自DB的字符串的唯一列表。我想“按原样”遍历它并进行“模式匹配”:公共int比较(字符串源,字符串模式){if(source.StartsWith(pattern)){return 0;}返回source.CompareTo(pattern);}如果我不能对它进行排序,因为它会破坏元素的正确顺序,该怎么办?假设我有一个来自DB的字符串的唯一列表。我想“按原样”遍历它并进行“模式匹配”:公共int比较(字符串源,字符串模式){if(source.StartsWith(pattern)){return 0;}返回source.CompareTo(pattern);}