📜  c# 搜索字符串数组 - C# (1)

📅  最后修改于: 2023-12-03 15:13:51.818000             🧑  作者: Mango

C# 搜索字符串数组

在C#中,我们经常需要搜索一个字符串数组(string array)中特定的元素。这个过程通常被称为查找操作。

1. 线性搜索

线性搜索是一种直接遍历数组并逐一比较每个元素的查找方法。为了演示这个方法,我们可以写下如下代码:

string[] fruits = {"apple", "banana", "orange", "pear"};
string target = "orange";
int index = -1;

for (int i = 0; i < fruits.Length; i++)
{
    if (fruits[i] == target)
    {
        index = i;
        break;
    }
}

if (index != -1)
{
    Console.WriteLine("目标元素 '{0}' 找到了,位置为 {1}。", target, index);
}
else
{
    Console.WriteLine("目标元素 '{0}' 没有找到。", target);
}

以上代码的输出为:

目标元素 'orange' 找到了,位置为 2。
2. 二分搜索

二分搜索(Binary Search)算法是一种更加高效的查找方法,但是要求待搜索的数据必须是已经排好序的有序数组。我们可以使用内置的 Array.BinarySearch 方法,例如:

string[] fruits = {"apple", "banana", "orange", "pear"};
string target = "orange";
int index = Array.BinarySearch(fruits, target);

if (index >= 0)
{
    Console.WriteLine("目标元素 '{0}' 找到了,位置为 {1}。", target, index);
}
else
{
    Console.WriteLine("目标元素 '{0}' 没有找到。", target);
}

以上代码的输出仍为:

目标元素 'orange' 找到了,位置为 2。
3. LINQ 查询

如果你习惯使用LINQ查询,那么可以使用 Enumerable.IndexOf 方法,例如:

string[] fruits = {"apple", "banana", "orange", "pear"};
string target = "orange";
int index = fruits.IndexOf(target);

if (index >= 0)
{
    Console.WriteLine("目标元素 '{0}' 找到了,位置为 {1}。", target, index);
}
else
{
    Console.WriteLine("目标元素 '{0}' 没有找到。", target);
}

以上代码输出和前两种方法相同。

无论采用哪种搜索方法,你都可以在C#中轻松地查找一个字符串数组中的元素。