可能最好用一个小例子说明 鉴于关系
A < B < C
A < P < Q
正确的输出将是
ABCPQ or APQBC or APBCQ ... etc.
换句话说,任何排序都是有效的,其中给定的关系成立。
我最感兴趣的是最容易实现的解决方案,但速度和时间方面的最佳O(n)也很有趣。
答案 0 :(得分:9)
标准算法是输出一个最小元素,然后将其删除并重复直到完成。
答案 1 :(得分:1)
做几种。首先根据第一个规则排序,然后根据第二个规则排序,依此类推。应该工作,除非你的规则包含矛盾。确实很容易实现。
答案 2 :(得分:1)
您可以使用手头的序列在C ++中重复调用make_heap,pop_heap。