📅  最后修改于: 2023-12-03 15:29:28.340000             🧑  作者: Mango
Array.BinarySearch(Array, Object)
方法在有序数组中搜索指定对象并返回其索引,如果未找到,则返回负值。此方法使用二分查找算法。
public static int BinarySearch(Array array, object value);
参数:
array
:要搜索的有序一维数组。value
:要查找的对象。返回值:
using System;
class MainClass {
public static void Main (string[] args) {
int[] arr = { 2, 5, 8, 10, 12, 15 };
int index = Array.BinarySearch(arr, 10);
Console.WriteLine(index); // Output: 3
}
}
在此示例中,我们声明一个有序的整数数组,并使用 Array.BinarySearch
方法查找值为 10 的索引。方法返回 3,表示 10 在数组中的索引为 3。
如果我们搜索一个不存在的值,该方法将返回负值。例如,如果我们重新运行上面的代码,但将值改为 7,方法将返回 -3,表示 -value 应插入数组索引为 2 的地方,才能保持排序。
Array.BinarySearch
方法只能用于已排序的一维数组。
如果你要在多维数组中搜索,需要先使用 Array.Copy
方法将多维数组复制到一维数组中,然后对一维数组进行搜索。
如果有多个元素等于要搜索的值,则无法保证该方法将找到哪个元素。在这种情况下,建议使用 Array.IndexOf
方法。
传递给方法的比较器决定了如何比较查找的值和数组中的元素。默认情况下,使用元素的自然排序。如果你想自定义排序,你需要创建一个实现了 System.Collections.IComparer
接口的比较器类。并将其传递给 Array.BinarySearch
方法的第三个参数。