用于对三角形列表进行排序的最小交换次数

时间:2014-12-19 08:18:35

标签: algorithm sorting time-complexity

L = list of S's放在S = list of lengths of sides of a triangle

然后,我需要找到对列表L进行排序所需的最小交换次数。

列表L被称为排序:

  1. 如果每个S列表中的元素按非递减顺序排序并且
  2. 如果每个S列表的第i个索引处的元素按非递减顺序排序。
  3. 其中0 <= i <= 2

    注意:可以进行两种类型的交换操作:

    • 可以交换带有S列表的元素(需要1个交换)
    • 可以交换两个完整的S列表,而无需更改元素的顺序。    (需要3次掉期)

    在时间复杂度方面的任何有效算法,以找到对列表L 进行排序所需的最小交换次数

    修改

    正如@Mbo正确指出的那样,并不总是可以对这样的列表L进行排序。所以,如果有人提供算法来检查列表L是否可以排序然后排序,那将会很棒可能的。

1 个答案:

答案 0 :(得分:0)

也许我误解了,但在我看来,你必须对每个S中的3个元素进行排序。一旦完成,只需按列表顺序对三元组进行排序{S0 [0],S1 [0] ...}然后检查序列{S0 [1],S1 [1] .....},{S0 [2],S1 [2] ..}是否按升序排列。如果你有n个三角形,渐近最坏情况复杂度将是O(n)