我有多个有序列表。不幸的是,项目的顺序不是简单的字母或数字比较,否则这是微不足道的。所以我所拥有的是:
List #1 List #2 List #3
groundhog groundhog easter
mothersday mayday mothersday
midsummer laborday halloween
christmas
并且从这里我可以收集到比土拨鼠<母亲节,但土拨鼠和复活节的关系是未知的。我保证从列表到列表的项目顺序是自洽的。(即无论它出现在哪个列表中,复活节总是在万圣节之前)
但我需要的是一个新的有序列表,它只代表其他列表中的每个项目一次,它保留了上面所有已知的关系:
groundhog
easter
mayday
mothersday
midsummer
laborday
halloween
christmas
但是,以下列表也是完全有效的:
easter
groundhog
mothersday
mayday
midsummer
laborday
halloween
christmas
我正在寻找一种相当快速的通用算法,我可以用这种算法对 N 个列表进行排序。(工作 C# 代码当然是一个加分项,但不是必需的。)
我有可行的解决方案,但它的 O(N^2) 和一只狗甚至拥有适度的数据集。