对数组进行排序以使其成为圆形数组

时间:2013-08-30 06:59:46

标签: arrays sorting

我有一个数组,我只能交换第i和第i + 1个元素。如何使用最少数量的交换操作将此数组排序为循环数组?

例如我的数组是: -

3 5 4 2 1

然后换第2和第3我得

3 4 5 2 1

然后交换第4和第5我得到

3 4 5 1 2 

这是2个交换中所需的排序循环数组。

另一个例子

4 3 5 1 2

这里只有一次交换第一和第二次给我3 4 5 1 2

我应该用什么算法来实现这个目标?

1 个答案:

答案 0 :(得分:1)

你可以使用带有temp变量的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中使用,并根据需要完美排序数组。