我知道我们通常使用 java.util.Arrays.sort(Object[], Comparator)
。 JavaDoc 说它是修改后的合并排序。
但是我需要一个排序算法来将每个对象与每个对象进行比较。我将有很多元素,其中的顺序并不重要。但有些元素确实需要位于特定的其他元素之后(不一定是连续的)。我认为(但不知道)合并排序还不够......
或许,我想要实现的根本不叫排序?
我是否需要自己实现这样一个系统,或者是否有相关的东西?
<小时/>示例:
Obj1, Obj2, Obj3, Obj4
以下几对的顺序并不重要(这意味着我的比较器应该返回 0):
Obj1, Obj2 (*)
Obj1, Obj3
Obj2, Obj3
Obj2, Obj4 (*)
Obj3, Obj4
但是! Obj4 后面确实有必要 Obj1。
由于有两对 (*),这在数学上意味着 Obj1 == Obj4。
使用归并排序可以吗?
谢谢
最佳答案
如果您知道理想的排序,一种选择是添加一些可排序的值,例如表示数据之间关系的整数。例如,如果项目 A 必须位于项目 B 之前,则确保其排序值小于项目 B 的值。然后,您可以提供一个仅查看排序值的自定义比较器,并且您可以使用标准排序算法。
关于Java:对元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6653053/