java数组问题有关奇偶排序

给定的数组里面奇数和偶数数量相同奇偶互换位置1234转变为2143样例2 : 11 55 100 200 7 300变成100 200 11 55 300 7

运行结果:

img

奇偶交换的方法封装了evenOddSwap函数。代码:



public class Test {

    
    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;
    }
    
    public static void showArr(int[] num){
        for(int i=0;i<num.length;i++){
            System.out.print(num[i] + " ");
        }
        System.out.println();
    }
        
    public static void main(String[] args) {
        
        int[] a = {1,2,3,4};
        int[] b = {100,25};
        int[] c={};
        int[] d={11,55,100,200,300,7};
        
        a=evenOddSwap(a);
        b=evenOddSwap(b);
        c=evenOddSwap(c);
        d=evenOddSwap(d);
        
        showArr(a);
        showArr(b);
        showArr(c);
        showArr(d);
        
    }

}

奇偶互换位置1234转变为2143 这算啥意思?相邻两个数如果一个奇数一个偶数就交换?还是相邻两个数如果一个奇数一个偶数,必须偶数在前?
11 55 100 200 7 300变成100 200 11 55 300 7
这规律似乎是从第一个数开始向后找到奇偶不同的数就交换位置?交换过的就不交换了???

int[] a = {11 55 100 200 7 300};
int[] b = new int[6];
for(int i=0;i<6;i++)
{
    if(b[i] != 1)
    {
        for(int j=i+1;j<6;j++)
        {
            if(b[j] != 1 && ((b[i]%2==0 && b[j]%2==1) || (b[i]%2==1 && b[j]%2==0))
            {
                b[j] = 1;
                int t = b[i];
                b[i] = b[j];
                b[j] = t;
                break;
            }
        }
    }
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

我想到了一个比较简单的程序实现它

img