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

怎么用数组优化两个 for 循环?

  •  
  •   joe0 · 2018-12-31 19:44:29 +08:00 · 2368 次点击
    这是一个创建于 2163 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://imgur.com/bK8oZNa

    今天我同学跟我说用数组可以优化,我一时想不出...

    第 1 条附言  ·  2018-12-31 22:02:12 +08:00
    刚问了,他是利用一个数组把嵌套 for 循环分离,避免重复的 if 判断.还是两个 for 循环.
    https://imgur.com/q3WN2du
    5 条回复    2018-12-31 20:29:39 +08:00
    iamaprin
        1
    iamaprin  
       2018-12-31 19:47:30 +08:00 via Android
    也可以用 map,id 作 key
    choury
        2
    choury  
       2018-12-31 19:47:58 +08:00
    把 rolelist 和 userRolelist 都排好序放到两个数组里面,然后再对比,时间复杂度可以到 log(n)+log(m)+n+m 这个级别
    zn
        3
    zn  
       2018-12-31 20:04:46 +08:00 via iPhone
    仅看你这个应用场景,用户角色这种数量级得数据……再怎么优化,顶多能快一纳秒的时间,基本没什么意义。

    不过,有这个优化的想法的话,平时写代码的时候会更加注意代码结构合理性,算是一件好事。
    liprais
        4
    liprais  
       2018-12-31 20:07:23 +08:00 via iPad
    参考 sort merge join
    另外也可以用 hashmap,参考 hash join
    miao1007
        5
    miao1007  
       2018-12-31 20:29:39 +08:00 via Android
    这种做分支预测比较差啊,最好做成 sorted Set
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2998 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 14:52 · PVG 22:52 · LAX 06:52 · JFK 09:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.