【问题标题】:Using recursion, segregate an array of integers to have the even integers come before the odd使用递归,分离一个整数数组,让偶数在奇数之前
【发布时间】:2018-09-10 03:09:18
【问题描述】:

我需要使用递归,它接受整数数组并让偶数出现在奇数之前,即 [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,2,3,4,5] ,现在我希望它以特定顺序排列偶数在赔率之前,但偶数和奇数都按升序排列,因此新数组必须显示为 [ 2,4,1,3,5]。我再次需要使用递归。
  • @JosephV 最好在一个新问题中提出这个问题。您可以发布此链接以供参考。
  • @ModusTollens 我可以将网址复制并粘贴到问题框中还是有其他方法可以链接它?提前致谢!
  • @JosephV 您可以使用问题下方的共享链接来获取它的链接(答案也是如此)。您可以复制并粘贴该链接。问题应该独立存在,因此发布代码以显示您尝试过的内容也很重要。
  • @ModusTollens 好的,我明天起床后会尝试一下,现在是凌晨 1 点,有点累。再次感谢您的帮助!

标签: java arrays recursion


【解决方案1】:

在第一次调用rearrange 时,您忘记使用数组长度初始化n。请参阅此更正的代码。确保使用 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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2020-10-17
    相关资源
    最近更新 更多