Luc*_*cas 4 sorting algorithm compare
我有一对像的列表
[[4,1],[1,2],[2,3]]
Run Code Online (Sandbox Code Playgroud)
我们的想法是对它们进行排序,以便第一个节点的第二个索引与第二个节点的第一个匹配.在该示例中,列表已排序.假设列表始终可以唯一地放入此表单中.该列表永远不会循环.
现在,如果有可能,我想要一个compare可以通过以下方式获得此表格的比较器:
x = [[4,1],[1,2],[2,3]]
x.sort(compare)
Run Code Online (Sandbox Code Playgroud)
假设函数compare返回对应于"更大"和"更小"的两个值中的一个.这是否可能,如果是,它是否依赖于排序算法.
如果不可能,它是否可以通过两次通过(可能使用不同的比较器)或任何固定次数的通过.
我在python中写过这个,但我的问题不是具体的.
一次通过是不可能的,因为您想要的顺序不是严格的部分顺序.具体来说,为了使比较器工作,它需要遵循几个属性:
在您的情况下,所有这三个属性都被违反:
对问题进行建模的更好方法是尝试通过图形查找欧拉路径.Eulerian路径是一种跟踪一系列链接的方式,因此您永远不会回溯链接,以便跟踪所有链接.(如果你曾经有过那些"画这个数字而不用回线或捡起你的铅笔"的谜题,那就完全一样了.)在你的情况下,链接是对[a,b]和通过它们的链与欧拉路径相同.幸运的是,有很多好的,有效的算法可以找到欧拉路径,我认为它们正是你在这个背景下寻找的.
希望这可以帮助!