![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/175789698566171.jpeg "
请问奇偶的块状交换如何改动?
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/175789698566171.jpeg "
请问奇偶的块状交换如何改动?
奇偶对交换位置,我自己写了一个测试程序,运行结果如下:
函数代码如下:
public static int[] evenOddSwap(int[] num){
if(num.length ==0)
return num;
int[] flag = new int[num.length];
for(int i = 0;i<num.length;i++)
flag[i] = 0;
int t = 0;
int index = 0;
for(int i=0;i<num.length;i++){
if(flag[i] == 1) //判断该位置的元素是否已经交换过
continue;
if(num[i]%2==0){
//当前数为偶数,找第一个奇数
for(index = i+1;index < num.length;index++){
if(flag[index]==0 && num[index]%2==1)
break;
}
if(index < num.length){
t = num[i];
num[i] = num[index];
num[index] = t;
flag[i] = 1;
flag[index] = 1;
}
}else{
//当前数为奇数,找第一个偶数
for(index = i+1;index < num.length;index++){
if(flag[index]==0 && num[index]%2==0)
break;
}
if(index < num.length){
t = num[i];
num[i] = num[index];
num[index] = t;
flag[i] = 1;
flag[index] = 1;
}
}
}
return num;
}