【问题标题】:Merge Sorted Sublists to Sorted Superlist将排序的子列表合并到排序的超级列表
【发布时间】:2016-10-10 09:18:20
【问题描述】:

我有一个包含 n 个排序列表的列表,每个列表包含 m 个元素(字符串)。这些元素来自一个我不知道的具有不同顺序的列表。我所知道的是所有子列表都维护元素的全局顺序。这些列表不是不相交的。列表的并集是原始列表的子集。

现在,我正在努力寻找一种算法,可以有效地将它们组合回一个列表(列表)中,并具有最大的排序精度。

是否有针对此类问题的解决方案?

我使用的是Java,这里有一些示例代码:

List<List<String>> elements = new ArrayList<>();

elements.add(Lists.newArrayList("A","D","F"));
elements.add(Lists.newArrayList("B","D","E"));
elements.add(Lists.newArrayList("A","B","G"));
elements.add(Lists.newArrayList("C","D","H"));

// the required method
List<List<String>> sorted = sortElements(elements);

/* expeced output:
 * [["A"],["B"],["C"],["D"],["G","F","E","H"]]
 */

【问题讨论】:

    标签: java algorithm list sorting sortedlist


    【解决方案1】:

    您正在寻找topological sorting

    您的初始列表表示有向图弧(A->D、D-​​>F 等)

    附: 俄罗斯文献“Demoucron 算法”中调用了一种特殊的拓扑排序,以明确地按级别划分节点,但我未能找到合适的英文描述(找到平面图绘图文章的链接)

    其工作示例:

    【讨论】:

      猜你喜欢
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 2020-10-25
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多