当前位置 : 主页 > 编程语言 > c语言 >

vb.net – 将1维数组插入到2维数组中

来源:互联网 收集:自由互联 发布时间:2021-06-24
我正在研究一种优化算法,需要将一些数据(由算法生成)存储在一个名为matrix的二维数组中,其中row(i)包含优化矢量(i)的适应度分数和参数值. Dim matrix(vectorCount() - 1, parameterCount()) As Double
我正在研究一种优化算法,需要将一些数据(由算法生成)存储在一个名为matrix的二维数组中,其中row(i)包含优化矢量(i)的适应度分数和参数值.

Dim matrix(vectorCount() - 1, parameterCount()) As Double
Dim params(parameterCount() - 1) As Double

For i As Integer = 0 To vectorCount() - 1
    matrix(i, 0) = vectorScore(i)
    params = vectorValues(i)
    For j As Integer = 0 To params.Length - 1
        matrix(i, j+1) = params(j)
    Next
Next

int vectorCount()返回向量的数量.
int parameterCount()返回每个向量中的参数数量.
double vectorScore(int vectorIndex)返回指定向量的适应度分数.
double [] vectorValues(int vectorIndex)返回指定向量的参数值.

我的问题:
是否有更快(即更有效)的方法将参数插入矩阵?

如果你想要效率,依靠“普通”阵列无疑是最好的选择.它们在其他替代方案(集合,列表等)方面如此高效的原因是因为它们包含所需的最少量信息.如果您希望花哨的函数允许轻松/快速地对信息进行排序,或者编写复杂的查询以检索数据,则不应该依赖数组.

我总是依赖于你编写的代码,并且没有速度问题(这非常快).我做了一个快速的研究,以确保没有其他选择,但找不到任何选项.最接近的是Array.Copy,虽然它可以在阵列具有相同尺寸时工作(我个人认为只使用1D阵列).无论如何,我发现了一个关于2D阵列的Array.Copy()与循环性能的interesting link(它在C#中,但一切都适用于VB.NET).

总结:您的代码非常快,无需进行改进.如果有一个有效的替代方案(Array.Copy适用于2D和1D,不存在的东西),结果性能会更好一点(并且仅适用于小数组大小).

网友评论