学习元素顺序的排序算法?

时间:2017-12-31 10:27:19

标签: algorithm sorting

我想知道是否存在一个算法的名称,该算法根据这些元素的排序列表来学习一组元素的顺序,然后能够使用该顺序对包含其中一些元素的列表进行排序。

示例:

我们有5个元素:"小","小","中","大","巨大&# 34 ;.当然,算法并不理解这些词的含义。我们可以在其中形成一些列表,其中包含一些按照" size"这个词(从最小到最大):

  • " small"," medium"," huge"
  • " tiny"," medium"," large"
  • "小","小","大","巨大"

我搜索的算法仅采用这些排序列表,并形成一个包含所有单词的单个列表,正确排序(即["微小","小"," ;中","大","巨大"])。

2 个答案:

答案 0 :(得分:3)

您可以根据示例构建有向图,其中单词是顶点,边缘反映序列。例如。第一个例子将边缘从“小”到“中”,从“中”到“巨大”。

然后执行图表的topological sort

答案 1 :(得分:2)

使用任何类型的排序算法,排序算法需要输入,这样如果你比较两个元素,你就会知道哪个元素是第一个。

例如:

array.sort(compareFunction)

compareFunction取2个元素,如果第一个元素在列表中排在第一位,则返回第二个元素。

从您的短名单列表中,您需要确定哪两个元素首先出现。

使用输入列表,构建如下表格:

       tiny small medium huge large
tiny    -    T       T     T    T
small   F    -       T     T    T
medium  F    F       -     T    T
huge    F    F       F     -    T
large   F    F       F     F    -

如果table[i][j],则i < j为真。

然后使用该表来解决您的compareFunction。