假设我们需要遍历一个 2D 数组内的 n 个元素( n=i*j)
String[i][j] arr = new String[i][j]
重构成
String[n] arr = new String[n]
会降低遍历时的 O()吗?
1
alphatoad 2020-02-11 09:14:12 +08:00
一样的,数组访问时间是 O(1)
|
2
msg7086 2020-02-11 09:14:26 +08:00
大 O 是数量级。只是改变数组访问方式不会改变算法耗时的数量级。
|
3
Cabana 2020-02-11 09:16:08 +08:00 via Android
我只知道二维数组,内存占用比同数量的一维数组多。
|
4
imn1 2020-02-11 09:30:11 +08:00
只是内存不同吧,时间关乎怎样 for
|
5
optional 2020-02-11 09:51:30 +08:00
如果是 c/c++的原始数组,没差别
但是其它 array 是有抽象成本的,内存不一定连续。 |
6
keith1126 2020-02-11 10:06:58 +08:00
非特殊场景,优先考虑可读性。(而且即便是高性能场景,我觉得这样的改写也没多大的优化效果)
|