使用有限数据对非数字对象进行排序

时间:2017-08-27 20:44:04

标签: sorting

假设我有时可以比较非数字对象,但有时候没有比较数据。

例如:

  • A大于B,但不与C进行比较。
  • B大于C

这清楚地创建了ABC的排序列表。

但是,我们添加大于D的{​​{1}}。由于没有将CDA进行比较的数据,因此最终排名并不明确。

我正在寻找的是一种用“尽力而为”对这些类型的数据点进行排名的方法,因为他们知道数据有限且最终的排序列表只会被部分排序。

此外,除了一维数组外,我还可以代表其他人。某种树,或许?

另一个想法是将包含大量数据的数据点组合在一起,因为它们可以轻松排序。然后使用组间比较对组进行排名。这样做的问题是,有时数据点可以与多个组进行比较。

1 个答案:

答案 0 :(得分:2)

如果我记得正确的大学,这通常是用图表算法完成的。制作边缘从较大元素到较小元素的所有项目的有向图,并跟踪节点具有的传入边缘数。从图中删除没有传入边的节点 - 减少被删除节点指向的所有节点的传入边数 - 冲洗,重复。有关详细信息和算法提示,请研究topological sorting

如果在任何时候您最终得到一个非空图表,其中所有节点都有一个传入边缘,那么您的排序中有一个循环,因此不是一个排序。