随机排序(通过满足某些条件)

use*_*551 1 java sorting algorithm arraylist

我正在寻找一种算法,可以通过满足某些条件进行随机排序.

例如:

列表: {1,2,3,4,5,6,7,8,9}

条件: {(4 before 8), (6 before 1), (3 before 2)}

因此,在列表编号4的随机排序中必须在编号8之前,依此类推......

我需要在Java中使用它(使用ArrayList),但我找不到算法来做到这一点!如果有人知道做这个事情的算法,请在回答中写出算法的名称,或者如果你有一个线索如何解决它,一点解释会很好.

Rob*_*aus 7

你真的想要拓扑排序.条件实际上是图中的边,数字是节点.拓扑排序将生成一个保留所有约束的订单.

  • @tieTYT不一定.在维基百科伪代码中,"从S中删除节点n"不指定要删除的节点.如果您随机选择节点,您的结果将随机排序,同时仍满足条件. (3认同)