【发布时间】:2013-11-03 12:04:02
【问题描述】:
我有一个数组,我只能交换第 i 个和第 i+1 个元素。如何使用最少数量的交换操作将此数组排序为循环数组?
例如我的数组是:-
3 5 4 2 1
然后交换第二个和第三个我得到
3 4 5 2 1
然后交换第四和第五我得到
3 4 5 1 2
这是2次交换所需的有序循环数组。
另一个例子
4 3 5 1 2
这里只有一次交换第一和第二给我3 4 5 1 2
我应该使用什么算法来实现这一点?
【问题讨论】:
-
您尝试过什么算法/方法?你至少有一个蛮力算法吗?
-
另外,你能交换第一个和最后一个元素吗(= 该规则也是循环的)吗?
-
不...只允许第 i+1 次交换...我试图对元素的位置进行哈希处理,然后检查它们是否应该向右或向左移动..但这并没有很好地解决问题