请教各位一个排序

2019-04-04 11:44:05 +08:00
 polymerdg

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

有一个列如下: $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 都可以 求大神幫忙

3495 次点击
所在节点    PHP
6 条回复
polymerdg
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
2019-04-04 11:52:25 +08:00
php usort 那些规则就是比较条件吧
polymerdg
2019-04-04 11:57:21 +08:00
@Keller0
leiuu
2019-04-04 12:42:17 +08:00
理解没错的话,from 先于 to 出现,那这个问题就是一个拓扑排序问题呀。
polymerdg
2019-04-04 14:30:47 +08:00
@leiuu 有环 咋办
leiuu
2019-04-04 15:08:28 +08:00
@polymerdg 有环这个问题就是无解的呀,你想 a 先于 b,b 先于 a,无论怎么样都不能满足条件。

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

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

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

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

© 2021 V2EX