需要查找给定键是否存在于可用键范围内并返回相应的索引值

时间:2013-12-27 02:45:13

标签: c# list search dictionary

我有大量的迭代计数数据,相应的时间从第二个开始。 基于任何输入,需要使用C#来识别输入第二个属于哪个特定迭代计数。

可用数据:

string----int
iter_1----00
iter_2----06
iter_3----08
iter_5----20
.
iter_n----n

所需的输出

03(input)-iter_1(output),
12(input)-iter_3(output)......

输入可以大到1000,并且代码需要根据输入秒获得所需的输出多达1000-10000次。

我确信使用List / Dictionary可以做到这一点。我不确定执行时间。任何DataStructure都没问题。

1 个答案:

答案 0 :(得分:0)

我使用过LIST并使用线性搜索来解决这个问题。由于用于填充列表的数据是排序的。我没有使用排序列表。使用1500项目列表时没有发现任何显着的时间性能问题,并进行了30000次线性搜索。

class Program
{
    //Class to store iteration value and time
    class test
    {
        public String Cycle;
        public int Time;
    };
    static void Main(string[] args)
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("test.xml");            
        List<test> Check = new List<test>();

        foreach (XmlNode node in doc.DocumentElement.ChildNodes)
        {
            // Deatils to fill the list are obtained via XML , which is already sorted.               
            int totsec = (int)TimeSpan.Parse(node.Attributes["ElapsedTime"].Value).TotalSeconds;
            Check.Add(new test() { Cycle = node.Name, Time = totsec });              

        }

        // to Find the iteration , Do linear search via Find Function

        int inputtocheck = 130;

        int index = Check.IndexOf(Check.Find(item => item.Time >= inputtocheck ));
        Console.WriteLine(Check[index].Cycle);

    }
}