我有一份申请表。我需要以一种特定的方式订购它们,并按此顺序安装。
需要考虑的事项:
有些应用程序需要另一个应用程序。
有些应用程序在安装下一个应用程序之前需要重新启动,我们希望此应用程序保持在列表的底部,但有些应用程序可能需要一个不需要重新启动的应用程序,因此,可能会发生某些既不需要重新启动也不需要重新启动的应用程序在需要重新启动的应用程序之后运行的情况。
例如:

P1 (Reboot)
P2 (Needs P3)
P3
P4 (Needs P1)
P5 (Reboot and needs P3)
P6 (Reboot)
P7

所以,如果我们有这样的程序:
P1 - P2 - P3 - P4 - P5 - P6 - P7

正确的顺序是(例如):
P3 - P7 - P2 - P1 - P4 - P5 - P6

如果有一个非重新启动的应用程序需要重新启动(如P4),那么如果它们比其他重新启动的应用程序(P5-P6)在列表中保持更高的位置,则会更好

最佳答案

你需要一个topological sorting算法。

关于algorithm - 如何订购此 list ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7430009/

10-11 05:52