V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
awanganddong
V2EX  ›  程序员

请教大家一个多字段 优先级的问题

  •  
  •   awanganddong · Apr 16, 2020 · 1273 views
    This topic created in 2210 days ago, the information mentioned may be changed or developed.

    比如有多组数据 a,b,c

    下边是权重对比

    1>2>3>4>5>6>7

    a 的值为[1,2,3];

    b 的值为[3,4,5];

    c 的值为[1,2,7];

    首先比较第一位,如果第一位是 1 的话,则排序是这样的

    a [1,2,3]

    c [1,1,7]

    b [3,4,5]

    然后比较第二位,则排序是这样的

    a [1,1,7]

    b [1,2,3]

    c [3,4,5]

    就是根据数字对 a,b,c 进行排序

    在数字不多的情况下,我是采用计数相加操作的

    比如 a=100,b=10,c=1 但是优先级多的话,int 就不够用了。

    大家有什么比较好的算法没。感觉和 mysql 最左前缀的排序好像

    5 replies    2020-04-17 14:20:08 +08:00
    purensong
        1
    purensong  
       Apr 16, 2020
    就一列列排序,越往后的列数据集会越多,每组里排序的个数会变少,所以越排越快,随便挑一种排序去做都可以吧
    Zhuzhuchenyan
        2
    Zhuzhuchenyan  
       Apr 16, 2020
    没有懂这样做的目的是什么,如果单纯按照第一列第二列第三列顺序排序的话,参考字符串的高位优先算法,如果不是每一次都按照第一第二第三排序,考虑维护一张表,表示了字段名对优先级的映射
    第一列 = 1
    第二列 = 4
    第三列 = 3
    第四列 = 2
    然后魔改一下高位优先算法使得他按照这张表阐述的规则进行排序就行了
    awanganddong
        3
    awanganddong  
    OP
       Apr 16, 2020
    其实就是字段优先级排序问题,举个例子,比如买家级别分为 16 个层次,每个买家可以有多个层次,然后根据每个买家的层次进行优先级排序。
    awanganddong
        4
    awanganddong  
    OP
       Apr 17, 2020
    @purensong 最后安装你给的方案,暴力排序了
    awanganddong
        5
    awanganddong  
    OP
       Apr 17, 2020
    按照
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   6025 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 06:16 · PVG 14:16 · LAX 23:16 · JFK 02:16
    ♥ Do have faith in what you're doing.