栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

实现矩阵更有效-使用数组数组(2D)还是一维数组?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实现矩阵更有效-使用数组数组(2D)还是一维数组?

“高效”不是万能的。

就存储可能稀疏的数组而言,数组数组解决方案效率更高(即,您可以使用空指针表示全零的矩阵行)。这将是(在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是如何编码的,所以我可能是错的(但我对此表示怀疑:-)。我的建议是,一如既往地对优化问题进行 衡量,不要猜测!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453395.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号