8e47e42
V2EX  ›  问与答

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

  •  
  •   8e47e42 · Feb 11, 2020 · 2063 views
    This topic created in 2295 days ago, the information mentioned may be changed or developed.

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

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

    重构成

    String[n] arr = new String[n]
    

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

    6 replies    2020-02-11 10:06:58 +08:00
    alphatoad
        1
    alphatoad  
       Feb 11, 2020
    一样的,数组访问时间是 O(1)
    msg7086
        2
    msg7086  
       Feb 11, 2020
    大 O 是数量级。只是改变数组访问方式不会改变算法耗时的数量级。
    Cabana
        3
    Cabana  
       Feb 11, 2020 via Android
    我只知道二维数组,内存占用比同数量的一维数组多。
    imn1
        4
    imn1  
       Feb 11, 2020
    只是内存不同吧,时间关乎怎样 for
    optional
        5
    optional  
       Feb 11, 2020
    如果是 c/c++的原始数组,没差别
    但是其它 array 是有抽象成本的,内存不一定连续。
    zackwu
        6
    zackwu  
       Feb 11, 2020
    非特殊场景,优先考虑可读性。(而且即便是高性能场景,我觉得这样的改写也没多大的优化效果)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3515 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 11:15 · PVG 19:15 · LAX 04:15 · JFK 07:15
    ♥ Do have faith in what you're doing.