V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
8e47e42
V2EX  ›  问与答

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

  •  
  •   8e47e42 · 2020-02-11 08:52:13 +08:00 · 1667 次点击
    这是一个创建于 1739 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    重构成

    String[n] arr = new String[n]
    

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

    6 条回复    2020-02-11 10:06:58 +08:00
    alphatoad
        1
    alphatoad  
       2020-02-11 09:14:12 +08:00
    一样的,数组访问时间是 O(1)
    msg7086
        2
    msg7086  
       2020-02-11 09:14:26 +08:00
    大 O 是数量级。只是改变数组访问方式不会改变算法耗时的数量级。
    Cabana
        3
    Cabana  
       2020-02-11 09:16:08 +08:00 via Android
    我只知道二维数组,内存占用比同数量的一维数组多。
    imn1
        4
    imn1  
       2020-02-11 09:30:11 +08:00
    只是内存不同吧,时间关乎怎样 for
    optional
        5
    optional  
       2020-02-11 09:51:30 +08:00
    如果是 c/c++的原始数组,没差别
    但是其它 array 是有抽象成本的,内存不一定连续。
    keith1126
        6
    keith1126  
       2020-02-11 10:06:58 +08:00
    非特殊场景,优先考虑可读性。(而且即便是高性能场景,我觉得这样的改写也没多大的优化效果)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5486 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 06:57 · PVG 14:57 · LAX 22:57 · JFK 01:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.