使用递归,隔离一个整数数组,使偶数整数出现在奇数之前

时间:2018-03-31 07:07:26

标签: java arrays recursion

我需要使用带有整数数组的递归,并且偶数整数出现在奇数整数之前,即[1,2,3,4,5]的数组应该看起来像[2,4,1,3] ,5]。请注意,即使在奇数之前,整数也不需要按任何特定顺序排列。这是我到目前为止,任何帮助将不胜感激!

public class EBOMain {

   static int[] Array  = { 1, 2, 3, 4, 5, 6};
   static int n;

    public static void main(String[] args) {


        System.out.print("Array before sort: "  );
        for (int i = 0; i < Array.length; i++)
            System.out.print(Array[i] +" ");
        n = Array.length;
        rearrange(Array, n);

        System.out.print("\nArray after sort: "  );
        for (int i = 0; i < Array.length; i++)
            System.out.print(Array[i] +" ");        
    }

    public static void rearrange(int []Array,int n){
          if (n==0)
            return;
        else if(Array[n-1]%2==0) {
            for(int i=0;i<n-1;i++) {
                if(Array[i]%2!=0) {      
                    int temp = Array[i];
                    Array[i]= Array[n-1];
                    Array[n-1] = temp;

                    rearrange(Array,n-1);
                }
            }
        }
        else
            rearrange(Array,n-1);
    }
}

1 个答案:

答案 0 :(得分:3)

您忘记在第一次调用n时使用数组的长度初始化rearrange。请参阅此更正的代码。确保使用Java代码约定;我将Array变量重命名为array

public class EBOMain {

    static int[] array = { 1, 2, 3, 4, 5, 6 };

    public static void main(String[] args) {

        System.out.print("array before sort: ");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }

        rearrange(array, array.length);  // <-- Change is here

        System.out.print("\narray after sort: ");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
    }

    public static void rearrange(int[] array, int n) {
        if (n == 0) {
            return;
        } else if (array[n - 1] % 2 == 0) {
            for (int i = 0; i < n - 1; i++) {
                if (array[i] % 2 != 0) {
                    int temp = array[i];
                    array[i] = array[n - 1];
                    array[n - 1] = temp;

                    rearrange(array, n - 1);
                }
            }
        } else {
            rearrange(array, n - 1);
        }
    }
}

输出:

array before sort: 1 2 3 4 5 6 
array after sort: 6 2 4 1 3 5