我在看拓扑排序,它看起来很复杂。我想出了这个,它似乎适用于我能找到的所有例子。这个逻辑有问题吗?
@tsort_array = []
def tsort item, dependencies_array
if index = @tsort_array.index(item)
@tsort_array = @tsort_array.insert(index, dependencies_array).flatten
else
@tsort_array += dependencies_array
@tsort_array << item
end
@tsort_array = @tsort_array.uniq
end
使用来自http://ruby-doc.org/stdlib-1.9.3/libdoc/tsort/rdoc/TSort.html的示例具有相同的结果。
>> tsort 1, [2,3]
=> [2, 3, 1]
>> tsort 2, [3]
=> [3, 2, 1]
>> tsort 3, []
=> [3, 2, 1]
>> tsort 4, []
=> [3, 2, 1, 4]