Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 集合排序算法_Algorithm - Fatal编程技术网

Algorithm 集合排序算法

Algorithm 集合排序算法,algorithm,Algorithm,我有一套50个项目和许多条件,具体说明哪些元素应该排在其他元素之前 如何创建有序列表 你会喜欢C语言,不过你可以把它从其他语言翻译过来。你可以研究很多排序算法。我脑海中浮现出的两个问题是冒泡排序和快速排序。将“许多条件”转换为比较函数,然后将其与基于比较的排序结合使用(在一般情况下) 在最佳情况下,基于比较的最佳排序算法是O(nlogn)。合并排序就是这样一种算法,而且很容易实现。。。还有很多其他的 如果您的条件构成了偏序(而不是总序),那么拓扑排序可能是最合适的。我想您应该使用排序算法()。如

我有一套50个项目和许多条件,具体说明哪些元素应该排在其他元素之前

如何创建有序列表


你会喜欢C语言,不过你可以把它从其他语言翻译过来。

你可以研究很多排序算法。我脑海中浮现出的两个问题是冒泡排序和快速排序。

将“许多条件”转换为比较函数,然后将其与基于比较的排序结合使用(在一般情况下)

在最佳情况下,基于比较的最佳排序算法是O(nlogn)。合并排序就是这样一种算法,而且很容易实现。。。还有很多其他的


如果您的条件构成了偏序(而不是总序),那么拓扑排序可能是最合适的。

我想您应该使用排序算法()。如果你想知道更具体的东西,你需要提供更多的细节。排序需要在所有项目之间进行比较。我不知道所有元素之间是否都有对应关系。我不知道为什么当答案有+ve votesorting需要对所有项目进行比较时会投反对票。我并没有将它用于所有元素,但是保证比较函数是可传递的将是非常重要的。i、 e.如果你的条件
很好。同样,如果a>b>c>a,问题可能不是排序问题,而是安排客人在餐桌旁。传递性检查是拓扑排序的一部分,它与图论有关,其中关系表示为有向边,循环检查非常容易,并且可以通过关系时间的数量以线性方式进行。@Thomas:问题是拓扑排序,而不是“正常”排序,在这里可以比较任意两个值。这是一个很好的建议,特别是当“条件”为OP的提及构成了偏序。@Thomas这正是我理解OP问题的方式,尽管它的表述很糟糕,我同意:)谢谢。这正是我想要的。是的,任何评论都可以投反对票。Gj,伙计们。你们在不理解问题的情况下匆忙回答,这就是原因。然而,除了建议的排序算法之外,你们的答案和我的没有什么不同。OP的问题太模糊了,根本无法形成一个具体的答案。@MGZero:实际上,unkulunkulu给出的答案更好,因为它解决了偏序问题。虽然他没有详细说明,但他确实提供了一个有用的链接,这就是我投票支持他的答案的原因。托马斯的回答更彻底,花了更多的时间,所以我也投了赞成票。你的答案更像是对问题的重述,有两个建议没有太大的相关性,也没有详细说明。这就是为什么我没有投票支持你的答案。但那只是我。哦,请不要误会,我不介意否决票,我只是想知道为什么我被否决:)也帮助我理解问题+1为实际发布一个有用的理由。