我想知道是否存在一个算法的名称,该算法根据这些元素的排序列表来学习一组元素的顺序,然后能够使用该顺序对包含其中一些元素的列表进行排序。
示例:
我们有5个元素:"小","小","中","大","巨大&# 34 ;.当然,算法并不理解这些词的含义。我们可以在其中形成一些列表,其中包含一些按照" size"这个词(从最小到最大):
我搜索的算法仅采用这些排序列表,并形成一个包含所有单词的单个列表,正确排序(即["微小","小"," ;中","大","巨大"])。
答案 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。