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