C# 用C语言编写一个程序,使用迭代二进制搜索算法来搜索使用姓名的人的年龄
这需要拆分包含年龄和人名的数组,然后对name变量执行搜索操作,如果数组中存在人名,则最后打印年龄 到目前为止,我只创建了一个二维数组,但不知道如何拆分然后执行搜索C# 用C语言编写一个程序,使用迭代二进制搜索算法来搜索使用姓名的人的年龄,c#,binary-search,C#,Binary Search,这需要拆分包含年龄和人名的数组,然后对name变量执行搜索操作,如果数组中存在人名,则最后打印年龄 到目前为止,我只创建了一个二维数组,但不知道如何拆分然后执行搜索 String[,] arr = { { "aakif", "25" }, {"ali", "31"} , {"ben","35"}, {"hassnain" ,"45" } }; 我不同意您存储输入的方式,但您可以通过以下方式实现搜索: String[,] arr = new string[2,4]; arr[0, 0] = "s
String[,] arr = { { "aakif", "25" }, {"ali", "31"} , {"ben","35"}, {"hassnain" ,"45" } };
我不同意您存储输入的方式,但您可以通过以下方式实现搜索:
String[,] arr = new string[2,4];
arr[0, 0] = "saif";
arr[0, 1] = "25";
arr[0, 2] = "ali";
arr[0, 3] = "17";
arr[1, 0] = "aakif";
arr[1, 1] = "11";
arr[1, 2] = "hassnain";
arr[1, 3] = "50";
int index = -1;
int jindex = -1;
for ( int i =0 ; i <arr.GetLength(0) ; i++) {
for ( int j =0 ; j <arr.GetLength(1) ; j++) {
if (arr[i,j]== "ali") {
index = i;
jindex = j;
break;
}
}
}
if ( index != -1) {
Console.WriteLine(arr[index,jindex] + " " + arr[index,jindex +1 ]);
}
else Console.WriteLine("Not Found");
输出:
ali age = 31
索引[0,0]、[1,0]的第一个索引(如果您要查找的名称)。[索引,1]并打印年龄值
string[,] arr = { { "aakif", "25" }, { "ali", "31" }, { "ben", "35" }, { "hassnain", "45" } };
string search = "ali";
for (int i = 0; i < arr.GetLength(0); i++)
{
if (arr[i,0].ToString() == search)
{
Console.WriteLine(arr[i, 0] + " " + arr[i, 1] + " years old");
}
}
在这种情况下,最好使用字典键,值。我必须使用2D数组,这是赋值任务的一部分。@Melchia我感觉ali_25想学习如何进行二进制搜索,而不仅仅是使用字典之类的预打包解决方案。让我们看看您尝试了什么。特别是当您跟踪正在搜索的范围的开始和结束时。在某个时刻,您将计算起点和终点之间的中点,然后更新起点或终点,并将中点的值指定给它,以便在范围的前半部分或后半部分继续搜索。在这里提问不是正确的做法,还有其他网站更适合此类问题。非常感谢。我已经纠正了输入存储方式。
static void Test()
{
string[,] arr =
{
{ "aakif", "25" },
{ "ali", "31" },
{ "ben", "35" },
{ "hassnain", "45" }
};
string search = "ali";
string age = arr.GetAge(search);
if ( age != null )
Console.WriteLine($"{search} age = {age}");
else
Console.WriteLine($"{search} not found");
}
static string GetAge(this string[,] array, string name)
{
for ( int index = array.GetLowerBound(0); index <= array.GetUpperBound(0); index++ )
if ( array[index, array.GetLowerBound(1)] == name )
return array[index, array.GetUpperBound(1)];
return null;
}
}
}
ali age = 31
string[,] arr = { { "aakif", "25" }, { "ali", "31" }, { "ben", "35" }, { "hassnain", "45" } };
string search = "ali";
for (int i = 0; i < arr.GetLength(0); i++)
{
if (arr[i,0].ToString() == search)
{
Console.WriteLine(arr[i, 0] + " " + arr[i, 1] + " years old");
}
}