标签: algorithm sorting
我正在寻找一种可以根据需求进行排序的算法。例如,如果我有3个节点N1,N2和N3 我要求N2必须在N3之后,并且N3要求它必须在N1之后。所以正确的排序将是N1,N3,N2。
答案 0 :(得分:5)
根据您的要求形成图表。您的项目是节点,如果A必须在B之前,则存在从A到B的有向边。反复地,删除没有传入边缘的节点并删除其所有传出边缘。执行此操作直到删除所有节点。您将按所需顺序删除它们,满足要求。
有关实施的详细信息,请参阅此处:Topological sorting。