我有以下问题:
我的任务是确定是否可以对给定的排列进行排序,但只使用一种类型的操作:我们可以将第i个元素向左移动两个位置。同样,元素i-1和i-2向右移动一个位置。
例如: 可以对排列进行排序(2,5,3,4,1),但我们不能通过排列(2,3,5,4,1)来进行排序。
(2,5,3,的 4 下,1)
(2,4,5-, 3 下,1)
(2,3,4,5-, 1 )
(2,3的 1 下,4,5)
(1,2,3,4,5)
复杂性应该是线性的。 我提出了二次解决方案,但它太慢了。我尝试过贪婪的方法,但失败了。
这个问题让我完全陷入困境。
答案 0 :(得分:1)
如果存在偶数个反转,则可以仅使用此操作对排列进行排序。您可以使用O(n log n)中的合并排序来计算反转。