我有一个数组,我只能交换第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
我应该用什么算法来实现这个目标?
答案 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中使用,并根据需要完美排序数组。