让L = list of S's
放在S = list of lengths of sides of a triangle
。
然后,我需要找到对列表L进行排序所需的最小交换次数。
列表L被称为排序:
其中0 <= i <= 2
注意:可以进行两种类型的交换操作:
在时间复杂度方面的任何有效算法,以找到对列表L 进行排序所需的最小交换次数?
修改
正如@Mbo正确指出的那样,并不总是可以对这样的列表L进行排序。所以,如果有人提供算法来检查列表L是否可以排序然后排序,那将会很棒可能的。
答案 0 :(得分:0)
也许我误解了,但在我看来,你必须对每个S中的3个元素进行排序。一旦完成,只需按列表顺序对三元组进行排序{S0 [0],S1 [0] ...}然后检查序列{S0 [1],S1 [1] .....},{S0 [2],S1 [2] ..}是否按升序排列。如果你有n个三角形,渐近最坏情况复杂度将是O(n)