我有大量的迭代计数数据,相应的时间从第二个开始。 基于任何输入,需要使用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都没问题。
答案 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);
}
}