当可以用 1D array 的时候,我应该避免使用 2D array 吗

2020-02-11 08:52:13 +08:00
 8e47e42

假设我们需要遍历一个 2D 数组内的 n 个元素( n=i*j)

String[i][j] arr = new String[i][j]

重构成

String[n] arr = new String[n]

会降低遍历时的 O()吗?

1627 次点击
所在节点    问与答
6 条回复
alphatoad
2020-02-11 09:14:12 +08:00
一样的,数组访问时间是 O(1)
msg7086
2020-02-11 09:14:26 +08:00
大 O 是数量级。只是改变数组访问方式不会改变算法耗时的数量级。
Cabana
2020-02-11 09:16:08 +08:00
我只知道二维数组,内存占用比同数量的一维数组多。
imn1
2020-02-11 09:30:11 +08:00
只是内存不同吧,时间关乎怎样 for
optional
2020-02-11 09:51:30 +08:00
如果是 c/c++的原始数组,没差别
但是其它 array 是有抽象成本的,内存不一定连续。
keith1126
2020-02-11 10:06:58 +08:00
非特殊场景,优先考虑可读性。(而且即便是高性能场景,我觉得这样的改写也没多大的优化效果)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/643630

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX