遍历数据集时减少时间复杂度

时间:2015-10-09 00:21:38

标签: c# .net time-complexity

我有一个 n 数据表的数据集。 n 的最小值为30。 在每个数据表中,第一行定义以下行中数据的数据类型。例如:

string  Integer  string  Integer  Integer
test1    67      test1   45       78
test2    45      test1   32       45

可以有任意数量的行,我需要验证数据是否与定义的数据类型匹配。例如,test1是一个字符串,67是一个整数,等等。

我需要对整个数据集进行此验证。

以下是我提出的代码:

foreach(DataTable dt in dataset.Tables)
{
 for(int iRow = 1; iRow <dt.Rows.Count; iRow ++)
    { 
     for(int jCol = 0;jCol< dt.Columns.Count;jCol++)
      {
       //Datatype validation check
      }
    }
}

此解决方案正常。时间复杂度为O(datatablescount * dtrowscount * dtcolumnscount)。我正在尝试优化代码并寻找任何指针以减少时间复杂度。

1 个答案:

答案 0 :(得分:1)

如果您需要进行t * r * c检查,那么您可以检查多少。我建议尝试减少恒定时间因素并接受复杂性。

减少常量时间的一种方法:如果告诉C#该列的数据类型应该是什么,它会在您将数据放入数据表时为您检查类型。

例如:

// Will require that all values inserted in this column can be converted to Int32
dt.Columns[0].DataType = typeof(Int32);

您可以做的另一件事是检查更少的列。