用于排序松散可比数据的算法?

Mac*_*zie 5 java language-agnostic sorting algorithm

假设我有一个四个对象的未排序列表:[B, C, A, D].

所有四个对象都属于同一类型,并且:

  (A > B),
  (C > D),
  (A != C or D)
  (B != C or D)
  (C != A or B)
  (D != A or B).
Run Code Online (Sandbox Code Playgroud)

通过!=我的意思是,他们既不是小于,等于到或大于其他对象.

我需要"排序"名单,从而A会经常来之前B,并且C会经常来之前D.除了这两个要求之外,我对列表的排序没有要求; 因此,给定前面描述的列表,sort函数应返回[A, B, C, D][C, D, A, B].

至于这个问题的原因,我试图java.lang.Class根据它们之间的关系对一组对象进行排序.例如,如果A是超类/超级接口B,则A小于B.如果是Aextends/implements B,则A大于B.如果AB,那么显然是A等于B.否则,A完全不可比B.

IVl*_*lad 5

构建图表.对于每个两个元件xy使得x > y,从添加的有向边xy.在你的例子中,你有A -> BC -> D.然后在此图上运行拓扑排序.返回的拓扑排序将是一种可能的解决方案.