【问题标题】:Sorting data by a set of comparisons通过一组比较对数据进行排序
【发布时间】:2015-10-07 15:16:27
【问题描述】:

给定输入数据以多种比较的形式,比如'a > b', 'd a', ...

如何构建排序(从大到小)排序? (我不必担心得到不可能的输入;总会有一个正确的顺序。)

我正在考虑编写一个函数作为 std::sort 的参数,以查找比较列表中的每个元素,但我认为这不会处理传递性的想法。

【问题讨论】:

  • 你提前知道所有潜在的元素值吗?
  • @EdHeal 对不起,如果我让它看起来像是在要求代码。只是寻找进入的方向,或研究的算法。
  • @Mr.Llama 我没有——我必须从输入比较中得到。

标签: c++ sorting


【解决方案1】:

您实际上不需要进行基于比较的排序。

为每个不等式构造一个有向边的有向图,然后运行Topological Sorting。这将在线性时间内运行。

boost 图形库有这个implemented

【讨论】:

    猜你喜欢
    • 2018-12-12
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    相关资源
    最近更新 更多