{
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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!