【问题标题】:How do you sort odd and even array numbers in descending and ascending order?你如何按降序和升序对奇数和偶数数组进行排序?
【发布时间】:2022-12-13 22:25:17
【问题描述】:

我需要帮助按升序和降序对数组中的数字进行排序。偶数应该升序,奇数应该降序。

我已经设法按升序对数字进行排序,但想对奇数进行相反的操作。

实际结果:奇数和偶数都升序

预期结果:偶数递增,奇数递减

System.out.println("\n" + "random numbers generated:");
System.out.println(Arrays.toString(arrayList).replace("[", "").replace("]", "").replace(",", ""));
for (int i = 0; i < arrayList.length; i++) {
    for (int j = i+1; j < arrayList.length; j++) {
        if(arrayList[i] > arrayList[j]) {
            temporaryArray = arrayList[i];
            arrayList[i] = arrayList[j];
            arrayList[j] = temporaryArray;
        }
    }
}
System.out.println("\n" + "random numbers arranged:");

int[] arrayTwo = Arrays.copyOf(arrayList, arrayList.length);

for (int i = 0; i < arrayList.length; i++) {
    if(arrayTwo[i]%2!=0) {
        System.out.print(arrayTwo[i] + " ");
    }
}

System.out.print("| ");

for (int i = 0; i < arrayList.length; i++) {
    if(arrayTwo[i]%2==0) {
        System.out.print(arrayTwo[i] + " ");
    }
}

如何反转奇数数组?

【问题讨论】:

    标签: java sorting arraylist


    【解决方案1】:

    我会建议你:

      1. 按升序排列所有数字,
        1. 将奇数提取到第二个数组中
        1. 反转这个新数组。 在同一个数组中操作两个不同的顺序会复杂得多。 另外,如果您没有要求,我建议您使用Arrays 库的Arrays.sort() 来简化您的代码。它非常可读,并且具有较低的 O(N log N) 复杂度。

    【讨论】:

      【解决方案2】:

      你可以做的是像这样编写一个递归函数:

      public static void printOddReversed(int[] array, int index) {
          if (index == array.length)
              return;
      
          printOddReversed(array, index + 1);
      
          if (array[index] % 2 != 0) {
              System.out.print(array[index] + " ");
          }
      }
      

      然后代替第三个循环,这样称呼它:

      printOddReversed(arrayTwo, 0);
      

      【讨论】:

        【解决方案3】:

        一个简单的方法是使用一个特殊的比较器:

                if (a%2 == 0) {
                    if (b%2 == 0) {
                        return Integer.compare(a,b);
                    } else {
                        return 1;
                    }
                } else {
                    if (b%2 == 0) {
                        return -1;
                    } else {
                        return Integer.compare(b, a);
                    }
                }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-09-08
          • 1970-01-01
          • 2015-08-30
          • 1970-01-01
          • 2017-05-16
          • 1970-01-01
          • 2015-10-24
          • 2021-08-24
          相关资源
          最近更新 更多