1

我有要以伪拓扑方式排序的任务列表。说,我有这样的事情:

enum Task {
    case a(Int, Int)
    case b(String)
    case c(Bool)
}

我要求a在任何任务之前执行所有b任务,并且在所有b任务之前执行所有c任务。此外,同一时间的所有任务都需要保持与输入中相同的顺序。

用计算机科学术语来说,我需要的是

  • 稳定的排序算法和
  • 一种为其提供部分订单的方法。

Swift 标准库中有这样的东西吗?

观察:

  • Comparable,一种用于排序的自然协议,要求顺序是总的。
  • sorted可以使用部分订单,但不稳定。

作为替代方案,拓扑排序算法也可以工作,即使它会做的比我需要的更多。

4

0 回答 0