V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
polymerdg
V2EX  ›  PHP

请教各位一个排序

  •  
  •   polymerdg · 2019-04-04 11:44:05 +08:00 · 3471 次点击
    这是一个创建于 2060 天前的主题,其中的信息可能已经有所发展或是发生改变。

    业务上有个排序需求,想了半天 搞不定,发现自己好笨,难受!!!

    有一个列如下: $list = ['AB','0Q','IJ', 'KB', 'LM', '8U','DF', 'II', 'VT','CC'];

    前后规则: from | to

    KB | 8U KB | LM 8U | LM IJ | KB LM | IJ 0Q | AB KB | OQ DF | II AB | DF II | VT CC | KB

    根据规则将 $list 排序: 第一个指定:CC

    不知道有没有办法,想了半天 也没想出来

    PHP 或者 Python 都可以 求大神幫忙

    6 条回复    2019-04-04 15:08:28 +08:00
    polymerdg
        1
    polymerdg  
    OP
       2019-04-04 11:45:21 +08:00
    回车 换行 被替换掉了

    规则:

    from | to

    KB | 8U

    KB | LM

    8U | LM

    IJ | KB

    LM | IJ

    0Q | AB

    KB | OQ

    DF | II

    AB | DF

    II | VT

    CC | KB
    Keller0
        2
    Keller0  
       2019-04-04 11:52:25 +08:00 via Android
    php usort 那些规则就是比较条件吧
    polymerdg
        3
    polymerdg  
    OP
       2019-04-04 11:57:21 +08:00
    @Keller0
    leiuu
        4
    leiuu  
       2019-04-04 12:42:17 +08:00 via Android   ❤️ 1
    理解没错的话,from 先于 to 出现,那这个问题就是一个拓扑排序问题呀。
    polymerdg
        5
    polymerdg  
    OP
       2019-04-04 14:30:47 +08:00
    @leiuu 有环 咋办
    leiuu
        6
    leiuu  
       2019-04-04 15:08:28 +08:00
    @polymerdg 有环这个问题就是无解的呀,你想 a 先于 b,b 先于 a,无论怎么样都不能满足条件。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2738 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:07 · PVG 20:07 · LAX 04:07 · JFK 07:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.