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

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

  •  
  •   awanganddong · 2020-04-16 15:54:55 +08:00 · 948 次点击
    这是一个创建于 1689 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如有多组数据 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 条回复    2020-04-17 14:20:08 +08:00
    purensong
        1
    purensong  
       2020-04-16 16:03:59 +08:00
    就一列列排序,越往后的列数据集会越多,每组里排序的个数会变少,所以越排越快,随便挑一种排序去做都可以吧
    Zhuzhuchenyan
        2
    Zhuzhuchenyan  
       2020-04-16 16:09:41 +08:00
    没有懂这样做的目的是什么,如果单纯按照第一列第二列第三列顺序排序的话,参考字符串的高位优先算法,如果不是每一次都按照第一第二第三排序,考虑维护一张表,表示了字段名对优先级的映射
    第一列 = 1
    第二列 = 4
    第三列 = 3
    第四列 = 2
    然后魔改一下高位优先算法使得他按照这张表阐述的规则进行排序就行了
    awanganddong
        3
    awanganddong  
    OP
       2020-04-16 16:29:49 +08:00
    其实就是字段优先级排序问题,举个例子,比如买家级别分为 16 个层次,每个买家可以有多个层次,然后根据每个买家的层次进行优先级排序。
    awanganddong
        4
    awanganddong  
    OP
       2020-04-17 14:19:54 +08:00
    @purensong 最后安装你给的方案,暴力排序了
    awanganddong
        5
    awanganddong  
    OP
       2020-04-17 14:20:08 +08:00
    按照
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2573 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:16 · PVG 12:16 · LAX 20:16 · JFK 23:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.