算术排序解决方案到脑筋急转弯/拼图

And*_*ndy 3 java sorting algorithm

您之前可能已经看过订购脑筋急转弯:

在最新一轮的BrainBashers铁人三项赛中,基思排名第四.阿德里安不是最老的,但比邓肯更老,后者不是第二名.接下来是最年轻的孩子,获得第二名.排在第三位的孩子比完成第一名的孩子年龄大.比利比完成第三名的孩子年轻.你能确定谁在哪里完成并按照年龄顺序放置孩子吗?[资源]

我正在寻找一种算法来解决看起来非常类似的问题.

我有一组对象,我想根据将对象相互关联的规则进行排序.对于给定的一组规则,可能存在多个解决方案.在有效的解决方案中,所有规则都得到满足.一组规则也可能没有有效的解决方案.

例:

对象: A, B, C, D, E, and F

规则:

  • C> A.
  • C <D
  • F <C
  • A> F.
  • E> F.
  • D> E.

一种可能的方案:

 F A C E D B
Run Code Online (Sandbox Code Playgroud)

请注意,对象B与任何其他对象无关,因此它在序列中出现的位置无关紧要.

当然这已经做过了.谁能指出我正确的方向?我将最终在Java中执行此排序.

相关问题: Java partially ordered Collection<E>

Oli*_*rth 6

一种选择是使用规则来构建有向图,然后执行拓扑排序.

注意:我不知道这是否是最有效的方法,这只是我想到的第一件事.但是,这是O(N),所以从渐近的观点来看,你不会做得更好!