假设我有时可以比较非数字对象,但有时候没有比较数据。
例如:
A
大于B
,但不与C进行比较。B
大于C
。这清楚地创建了A
,B
,C
的排序列表。
但是,我们添加大于D
的{{1}}。由于没有将C
与D
或A
进行比较的数据,因此最终排名并不明确。
我正在寻找的是一种用“尽力而为”对这些类型的数据点进行排名的方法,因为他们知道数据有限且最终的排序列表只会被部分排序。
此外,除了一维数组外,我还可以代表其他人。某种树,或许?
另一个想法是将包含大量数据的数据点组合在一起,因为它们可以轻松排序。然后使用组间比较对组进行排名。这样做的问题是,有时数据点可以与多个组进行比较。
答案 0 :(得分:2)
如果我记得正确的大学,这通常是用图表算法完成的。制作边缘从较大元素到较小元素的所有项目的有向图,并跟踪节点具有的传入边缘数。从图中删除没有传入边的节点 - 减少被删除节点指向的所有节点的传入边数 - 冲洗,重复。有关详细信息和算法提示,请研究topological sorting。
如果在任何时候您最终得到一个非空图表,其中所有节点都有一个传入边缘,那么您的排序中有一个循环,因此不是一个排序。