📅  最后修改于: 2023-12-03 15:13:51.818000             🧑  作者: Mango
在C#中,我们经常需要搜索一个字符串数组(string array)中特定的元素。这个过程通常被称为查找操作。
线性搜索是一种直接遍历数组并逐一比较每个元素的查找方法。为了演示这个方法,我们可以写下如下代码:
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。
二分搜索(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。
如果你习惯使用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#中轻松地查找一个字符串数组中的元素。