C# 用C语言编写一个程序,使用迭代二进制搜索算法来搜索使用姓名的人的年龄

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

这需要拆分包含年龄和人名的数组,然后对name变量执行搜索操作,如果数组中存在人名,则最后打印年龄

到目前为止,我只创建了一个二维数组,但不知道如何拆分然后执行搜索

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");
            }
        }