2012-07-26 66 views
1

我正在构建一个程序,它将在6组数字上运行10000次迭代。这些数字经过迭代计算并按以下方式进行排序和排序。以C存储和分类数据的最佳方式#

*_Set1_****_Set2_****_Set3_****_Set4_****_Set5****_Set6_* 
********************************************************* 
**DESC******DESC******DESC******DESC******DESC*****DESC** 
********************************************************* 

其中Set(n)是数字的集合,DESC是数字的降序。我试过做LIST。但我对LIST非常陌生,我甚至不确定这是我在找什么。我给你什么,我是用LIST

//Created a Output Class for Sim 
public class MC_OUT 
    { 

     public double output; 
     public double OOIP; 
     public double OGIP; 
     public double EURO; 
     public double EURG; 
     public double rAREA; 
     public double calcEURO; 
     public double calcEURG; 

     public MC_OUT(double output, double OOIP, double OGIP, double EURO, double EURG, double rAREA, double calcEURO, double calcEURG) { 
     this.output = output; 
     this.OOIP = OOIP; 
     this.OGIP = OGIP; 
     this.EURO = EURO; 
     this.EURG = EURG; 
     this.rAREA = rAREA; 
     this.calcEURO = calcEURO; 
     this.calcEURG = calcEURG; 


     } 

//Declared list before Monte Carlo Sim. 
List<MC_OUT> mcout = new List<MC_OUT>(); 


//Ran Code to Perform Calculations 
//Then Executed this at End 
if (OOIP >= 0 && OGIP >= 0) 
     { 
      mcout.Add(new MC_OUT(NormSInv((i - .5)/iter), OOIP, OGIP, EURO, EURG, rAREA, EURO/(rAREA * rNET_H * rGCF) * 1000, EURG/(rAREA * rNET_H * rGCF) * 1000)); 
     } 
//Then I got confused and couldn't figure out how to sort and then access the needed 
//information 

做一个例子所以我想这一切的垃圾后,我的主要问题将是什么是存储这些信息的最有效方式,并可能有人请直接我来一个适当的教程?!

谢谢!

+0

@jsmith那么程序将需要在以后访问它,因为这些数字是依赖于另一种计算。 – ThundaUp 2012-07-26 18:27:02

+0

我不明白你想要做什么。试图通过列表循环,或者使用列表进行一些计算,或者是什么时遇到问题?如果你的列表应该是一组N值,那么就有一个Tuple类,它可能更适合你的情况。 – 2012-07-26 18:34:20

+0

@KendallFrey对不起,我的模糊。我很难试图解释我自己,所以期待混乱。每组将保存10000个数字,这些数字是以我遗漏的代码计算的。在这个集合中,我需要按降序排列数字。我正在看Tuple类。这可能是我需要的。谢谢你的评论! – ThundaUp 2012-07-26 18:38:34

回答

3

现在您已经创建了一个列表,您可以通过索引访问数据。例如:

var firstRecord = mcout[0]; 
var firstEURO = firstRecord.EURO; 

或者:

var firstEURO = mcout[0].EURO 

如果要将数据也可以是这么简单排序。

var sortedData = mcout.Orderby(x => x.OOIP); 

以上将根据您拥有的当前属性之一对数据进行排序。如果您需要对其进行不同的排序,则可能需要考虑将另一个属性添加到对象中,以便更适合排序。

使用foreach循环或for循环来枚举数据也很容易。

foreach (var mc in mcout) 
{ 
    var euro = mc.EURO; 
} 

for (int i = 0; i < mcout.Count; i++) 
{ 
    var euro = mcout[i].EURO; 
} 

集合是非常广泛使用的东西,并且有很多类型!你会想要了解它们,以及如何使用它们。如果你的谷歌C#集合,你会得到很多信息/教程。这是一个MSDN tutorial on collections。我可以继续探讨如何访问和使用它们,但真的有这么多,你需要潜入并通过网络上的信息开始学习。希望上面的例子和我给你的链接可以让你开始!干杯!

+0

我明白了...现在我可以在每个集合上执行此操作(因为我需要按降序排列每个集合)并为每个集合分配自己的'var'?我将如何去访问这个var里面的数字? – ThundaUp 2012-07-26 18:33:49

+0

啊,你给了我无数的信息。我会马上消耗它。感谢您的时间。 – ThundaUp 2012-07-26 18:42:30

+0

@ThundaUp任何时候为一个雷霆的球迷!必须照顾我的俄克拉荷马州同胞。 – jsmith 2012-07-26 18:45:36