vb.net - 将一维数组插入二维数组

标签 vb.net multidimensional-array insertion

我正在研究一种优化算法,需要将一些数据(由算法生成)存储在一个名为 matrix 的二维数组中,其中第 (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) 返回指定向量的参数值。

我的问题:
有没有更快(即更有效)的方法将 params 插入 matrix

最佳答案

如果你想要效率,依靠“普通”数组无疑是最好的选择。它们相对于其他替代方案(集合、列表等)如此高效的原因是因为它们包含所需的最少信息量。如果您想要能够轻松/快速地对信息进行排序或编写复杂查询来检索数据的奇特函数,则不应依赖数组。

我一直依赖像您编写的那样的代码,并且从未遇到过速度问题(这真的很快)。我进行了快速研究以确保没有其他选择,但找不到任何其他选择。最接近的是 Array.Copy,尽管它只在数组具有相同维度时起作用(我个人只将它用于一维数组)。无论如何,我找到了 interesting link关于 Array.Copy() 与二维数组的循环性能(它在 C# 中,但一切都适用于 VB.NET)。

总结:你的代码真的很快,不需要改进。如果有一个有效的替代方案(Array.Copy 适用于 2D 和 1D,什么不存在),最终的性能会好一点(并且仅适用于小数组)。

关于vb.net - 将一维数组插入二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17944946/

相关文章:

c# - 没有触发器的循环 Storyboard 动画

javascript - 使用 JavaScript 迭代 JSON 数组中的对象

c - 插入节点链表 C

c# - #if 不在 C# 中调试?

c# - WCF:StackoverFlow 异常

c# - asp.net 控件的 OnClick 事件

python - 优化二维数组

c - 多维数组和指针数学

Python MySQLdb 问题(TypeError : %d format: a number is required, 不是 str)

java - Mongo 3.0.2 驱动程序 : how to escape dots(. )在字符串中?