[用C#编写程序,该程序使用迭代二进制搜索算法使用其姓名搜索年龄

问题描述 投票:-4回答:3

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

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

String[,] arr = { { "aakif", "25" }, {"ali", "31"} , {"ben","35"}, {"hassnain" ,"45" } };
c# binary-search
3个回答
-1
投票

我确实不同意您存储输入的方式,但是您可以通过以下方式实现搜索:

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

0
投票
using System;

namespace ConsoleApp
{

  static partial class Program
  {
    static void Main(string[] args)
    {
      Test();
      Console.WriteLine();
      Console.WriteLine("End.");
      Console.ReadKey();
    }
    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

0
投票

在数组[0,0]的第一个索引中,如果要寻找[Index,1]并打印年龄值,则为[1,0]。

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");
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.