【发布时间】:2017-04-26 11:10:18
【问题描述】:
我在向量中有无序元素。没有传递性;如果元素 A > B 和 B > C,则 A > C 不需要为真。
我需要对它们进行排序,以使一个元素大于其下一个元素。
例如,如果我们有三个元素 A、B 和 C,并且:
A<B, A>C
B<C, B>A
C<A, C>B
向量是<A,B,C>,我们需要将其排序为<A,C,B>。
我已经使用冒泡排序和其他需要 O(n2) 时间的经典排序算法进行排序,但看起来效率不高。
有没有更高效的算法?
谢谢。
【问题讨论】:
-
只能按顺序排序,你说的不是一个。
-
是否有可能 A>B、B>C、C>A(与更多元素不相似)?
-
在问题中,您声明您已经使用“冒泡排序和其他经典排序算法”解决了这个问题。但是这些算法在这里不起作用,因为您的
<关系实际上是一个任意关系,而不是任何顺序,弱或其他。该问题等价于寻找一条哈密顿路径,对于该路径不存在已知的多项式时间算法。看我的回答。 -
这是非传递排序。不应该被否决。一个合法的问题,我在这里,因为我有同样的问题。
标签: algorithm performance sorting quadratic