C# ArrayList - BinarySearch() 方法
C# ArrayList BinarySearch() 方法用于在已排序的 ArrayList 中高效地搜索特定元素。
此方法执行二分查找,比线性查找快得多,但需要 ArrayList 已排序。
语法
以下是 C# ArrayList BinarySearch() 方法的语法 -
public virtual int BinarySearch(object value); public virtual int BinarySearch(object value, IComparer comparer); public virtual int BinarySearch(int index, int count, object value, IComparer comparer);
参数
此方法接受以下参数 -
- value:必须指定要在 ArrayList 中搜索的对象。对于引用类型,可以为 null。
- comparer:可选,使用 Icomparer 实现自定义比较。
- index:搜索范围的起始索引,从 0 开始。
- count:搜索范围内元素的数量。
返回值
如果找到该值,此方法将返回该值在已排序 ArrayList 中的起始索引,从 0 开始。否则,返回负数。
示例 1:添加范围内的元素
这是 ArrayList 集合的基本示例,用于演示如何使用 BinarySearch 在 ArrayList 中搜索特定对象 -
using System;
using System.Collections;
class Program
{
static void Main()
{
ArrayList arrayList = new ArrayList { 10, 20, 30, 40, 50 };
// 执行二分查找
int index = arrayList.BinarySearch(30);
if (index >= 0)
{
Console.WriteLine($"Element found at index: {index}");
}
else
{
Console.WriteLine("Element not found");
}
}
}
输出
以下是输出 -
Element found at index: 2
示例 2:如果 ArrayList 未排序会怎样
让我们看另一个 BinarySearch() 方法的示例。如果 ArrayList 未排序,我们需要先对其进行排序,然后再执行搜索操作 -
using System;
using System.Collections;
class Program
{
static void Main()
{
ArrayList arrayList = new ArrayList { 10, 30, 20, 60, 40, 15 };
arrayList.Sort();
// 执行二分查找
int index = arrayList.BinarySearch(30);
if (index >= 0)
{
Console.WriteLine($"Element found at index: {index}");
}
else
{
Console.WriteLine("Element not found");
}
}
}
输出
以下是输出 -
Element found at index: 3
示例 3:使用自定义比较器
在此示例中,我们使用带有自定义比较器的 BinarySearch 方法从 ArrayList 中查找特定元素 -
using System;
using System.Collections;
class DescendingComparer: IComparer {
public int Compare(object x, object y) {
// 逆序比较
return Comparer.Default.Compare(y, x);
}
}
class Program {
static void Main() {
// 创建 ArrayList 并按降序排序
ArrayList arrayList = new ArrayList {
50,
40,
30,
20,
10
};
arrayList.Sort(new DescendingComparer());
// 使用自定义比较器执行二分搜索
int index = arrayList.BinarySearch(30, new DescendingComparer());
if (index >= 0) {
Console.WriteLine($"Element found at index: {index}");
} else {
Console.WriteLine("Element not found");
}
}
}
输出
以下是输出 -
Element found at index: 2
示例 4:搜索元素范围
在本例中,我们使用 BinarySearch() 方法搜索具有以下范围的元素:-
using System;
using System.Collections;
class Program
{
static void Main()
{
// 创建并排序 ArrayList
ArrayList arrayList = new ArrayList { 10, 20, 30, 40, 50 };
arrayList.Sort();
// 在特定范围内执行二分查找
int index = arrayList.BinarySearch(1, 3, 40, null);
if (index >= 0)
{
Console.WriteLine($"Element found at index: {index}");
}
else
{
Console.WriteLine("Element not found in the range");
}
}
}
输出
以下是输出 -
Element found at index: 3

csharp_arraylist.html