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

发布于 2024-07-13 04:27:21 字数 246 浏览 11 评论 0原文

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

A < B < C
A < P < Q 

正确的输出将是

ABCPQ or APQBC or APBCQ ... etc.

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

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

Probably best illustrated with a small example.
Given the relations

A < B < C
A < P < Q 

Correct outputs would be

ABCPQ or APQBC or APBCQ ... etc.

In other words, any ordering is valid in which the given relationships hold.

I am most interested in the solution that is easiest to implement, but the best O(n) in speed and time is interesting as well.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

鹿! 2024-07-20 04:27:21

这称为拓扑排序

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

This is called topological sorting.

The standard algorithm is to output a minimal element, then remove it and repeat until done.

大姐,你呐 2024-07-20 04:27:21

做几种。 首先根据第一条规则排序,然后根据第二条规则排序,依此类推。 应该有效,除非你的规则包含矛盾。 当然很容易实施。

Do several sorts. First sort according to the first rule, then according to the second one and so on. Should work, unless your rules contain contradictions. sure easy enough to implement.

歌入人心 2024-07-20 04:27:21

您可以使用手头的序列在 C++ 中重复调用 make_heap、pop_heap。

You could repeatedly call make_heap, pop_heap in C++ with the sequence at hand.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文