使用数组实现Matrix构造时,哪一种效率更高?使用1D阵列还是2D阵列?
我认为2D效率更高,因为您已经拥有元素的X和Y坐标,而在一维实现中则必须计算索引。
编辑:正在使用Java实现
“高效”不是万能的。
就存储可能稀疏的数组而言,数组数组解决方案效率更高(即,您可以使用空指针表示全零的矩阵行)。这将是(在C中):
int *x[9];
每个都"int *"
将单独分配。
2D数组(不一定是数组的数组)通常会更快(就速度而言是有效的),因为它可以用数学方法计算出存储位置,而不必取消对存储位置的引用。我说的是构造:
int x[9][9];
一维数组的形式为:
int x[81];
它不可能比等效的2D版本快,因为您仍然必须在某个时候进行计算才能找到正确的单元格(通常在代码中手动进行,而不是让编译器来完成)。
编辑后添加Java的要求:
我相信Java 2D数组属于各种数组数组(与1D数组相比,将需要两次内存访问),因此带有手动索引计算的1D数组可能会更快。因此,与其声明和使用:
int x[width][height];
x[a][b] = 2;
您可能会提高速度:
int x[width*height];
x[a*height+b] = 2;
您只需要注意不要在任何地方混淆公式(即,不要无意间交换4和7)。
这种速度差异是基于我认为Java是如何编码的,所以我可能是错的(但我对此表示怀疑:-)。我的建议是,一如既往地对优化问题进行 衡量,不要猜测!
问题内容: 我有一个像这样的数组: 我试图得到这样的数组: 每行(具有固定的任意宽度)都移动一个。A的数组是10k记录长,我试图在Numpy中找到一种有效的方法。目前,我正在使用vstack和for循环,这很慢。有没有更快的方法? 编辑: 问题答案: 实际上,有一种更有效的方法来执行此操作…使用etc的缺点是,您正在复制数组。 顺便说一句,这实际上与@Paul的答案相同,但我将其发布只是为了更详细
本文向大家介绍python矩阵转换为一维数组的实例,包括了python矩阵转换为一维数组的实例的使用技巧和注意事项,需要的朋友参考一下 实例如下所示: 以上这篇python矩阵转换为一维数组的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
我需要以正确的二维数组格式打印此内容。哎呀,这是错误的。需要从方法打印。我的输出似乎是一个无限循环。
问题内容: 如何以矩阵框格式打印出简单的int [] [],就像我们在其中手写矩阵的格式那样。简单的循环运行显然无效。如果有帮助,我正在尝试在linux ssh终端中编译此代码。 问题答案: 产生:
问题内容: 例如: 一个) 与 b) 最初以为我会为了简化而选择a)。 我知道Java不会像C那样在内存中线性存储数组,但是这对我的程序有什么影响? 问题答案: 通常,在搜索答案时,最好的办法是查看如何将选择编译到JVM字节码中: 这被翻译成: 因此,如您所见,JVM已经知道我们在谈论多维数组。 进一步说明: 这被转换为(跳过循环): 因此,如您所见,多维数组在VM内部进行处理,无用指令不会产生开
1. 把数组中的 0 移到末尾 2. 改变矩阵维度 3. 找出数组中最长的连续 1 4. 有序矩阵查找 5. 有序矩阵的 Kth Element 6. 一个数组元素在 [1, n] 之间,其中一个数被替换为另一个数,找出重复的数和丢失的数 7. 找出数组中重复的数,数组值在 [1, n] 之间 8. 数组相邻差值的个数 9. 数组的度 10. 对角元素相等的矩阵 11. 嵌套数组 12. 分隔数组