2

我有一个数组,我只能交换第 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

我应该使用什么算法来实现这一点?

4

1 回答 1

1

您可以将 for 循环与临时变量一起使用,然后对其所有数组元素进行排序,但 for 循环应增加 2。

len=array[(array.length)];
for (i=1 ; i<len - 1 ; i=i+2 ){
    temp=array[i];
    array[i]=array[i+1];
    array[i+1]=temp;    
}
temp=array[0];
array[o]=array[len];
array[len]=temp;

这个简单的算法将在 java 中工作并根据您的需要完美地对数组进行排序。

于 2013-11-03T04:04:02.103 回答