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

2020-04-16 15:54:55 +08:00
 awanganddong

比如有多组数据 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 最左前缀的排序好像

887 次点击
所在节点    程序员
5 条回复
purensong
2020-04-16 16:03:59 +08:00
就一列列排序,越往后的列数据集会越多,每组里排序的个数会变少,所以越排越快,随便挑一种排序去做都可以吧
Zhuzhuchenyan
2020-04-16 16:09:41 +08:00
没有懂这样做的目的是什么,如果单纯按照第一列第二列第三列顺序排序的话,参考字符串的高位优先算法,如果不是每一次都按照第一第二第三排序,考虑维护一张表,表示了字段名对优先级的映射
第一列 = 1
第二列 = 4
第三列 = 3
第四列 = 2
然后魔改一下高位优先算法使得他按照这张表阐述的规则进行排序就行了
awanganddong
2020-04-16 16:29:49 +08:00
其实就是字段优先级排序问题,举个例子,比如买家级别分为 16 个层次,每个买家可以有多个层次,然后根据每个买家的层次进行优先级排序。
awanganddong
2020-04-17 14:19:54 +08:00
@purensong 最后安装你给的方案,暴力排序了
awanganddong
2020-04-17 14:20:08 +08:00
按照

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/663110

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX