algorithm - 对部分排序列表进行排序的最佳方法是什么?

标签 algorithm language-agnostic sorting topological-sort partial-ordering

最好用一个小例子来说明。
给定关系

A < B < C
A < P < Q 

正确的输出应该是

ABCPQ or APQBC or APBCQ ... etc.

换句话说,只要给定的关系成立,任何排序都是有效的。

我对最容易实现的解决方案最感兴趣,但速度和时间方面的最佳 O(n) 也很有趣。

最佳答案

这叫做 topological sorting .

标准算法是输出一个最小元素,然后移除它并重复直到完成。

关于algorithm - 对部分排序列表进行排序的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/480640/

相关文章:

algorithm - 设计外部存储器排序算法

algorithm - Booth 算法 Verilog 可综合

c++ - 在 C++ 中转换树

algorithm - 使用 PRNG 而不是洗牌生成洗牌范围

c# - 堆排序问题

ruby - 基于不同权重随机打乱数组的算法

Java lambdas 比匿名类慢 20 倍

java - 寻找类似于拼写检查器的API

algorithm - 沿隐含曲线对地理上不连续的线段进行排序

terminal - 如何阻止 ANSI 颜色代码弄乱 printf 对齐?