You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Java代码实现数组奇数降序、偶数升序排序?

解决方案

思路说明

你的代码已经完成了数组整体升序排序,这意味着偶数部分已经符合升序要求。要实现奇数降序,只需提取排序后的奇数部分并反转,再按「反转奇数 + 升序偶数」的顺序输出即可:

  1. 保留原数组的整体升序排序,确保偶数处于正确的升序状态。
  2. 从排序后的数组中提取所有奇数,将其反转(升序转降序)。
  3. 先打印反转后的奇数,再打印原排序数组中的偶数。

修改后的代码(使用集合简化操作)

import java.util.ArrayList;
import java.util.Collections;
import java.util.Arrays;

public class SortOddEven {
    public static void main(String[] args) {
        // 假设arrayList已被初始化并填充随机数
        int[] arrayList = {3,1,4,1,5,9,2,6};
        
        System.out.println("\n" + "random numbers generated:");
        System.out.println(Arrays.toString(arrayList).replace("[", "").replace("]", "").replace(",", ""));
        
        // 原整体升序排序逻辑不变
        int temporaryArray;
        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:");
        
        // 提取奇数并反转
        ArrayList<Integer> oddNumbers = new ArrayList<>();
        for (int num : arrayList) {
            if (num % 2 != 0) {
                oddNumbers.add(num);
            }
        }
        Collections.reverse(oddNumbers);
        
        // 打印反转后的奇数
        for (int odd : oddNumbers) {
            System.out.print(odd + " ");
        }
        
        System.out.print("| ");
        
        // 打印升序偶数(原排序数组已满足)
        for (int num : arrayList) {
            if (num % 2 == 0) {
                System.out.print(num + " ");
            }
        }
    }
}

纯数组实现(不使用集合)

如果不想依赖集合类,可以用数组操作完成反转:

import java.util.Arrays;

public class SortOddEven {
    public static void main(String[] args) {
        int[] arrayList = {3,1,4,1,5,9,2,6};
        
        System.out.println("\n" + "random numbers generated:");
        System.out.println(Arrays.toString(arrayList).replace("[", "").replace("]", "").replace(",", ""));
        
        // 原整体升序排序逻辑不变
        int temporaryArray;
        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 oddCount = 0;
        for (int num : arrayList) {
            if (num % 2 != 0) oddCount++;
        }
        int[] oddArray = new int[oddCount];
        int idx = 0;
        for (int num : arrayList) {
            if (num % 2 != 0) {
                oddArray[idx++] = num;
            }
        }
        
        // 反转奇数数组
        for (int i = 0; i < oddArray.length / 2; i++) {
            int temp = oddArray[i];
            oddArray[i] = oddArray[oddArray.length - 1 - i];
            oddArray[oddArray.length - 1 - i] = temp;
        }
        
        // 打印反转后的奇数
        for (int odd : oddArray) {
            System.out.print(odd + " ");
        }
        
        System.out.print("| ");
        
        // 打印升序偶数
        for (int num : arrayList) {
            if (num % 2 == 0) {
                System.out.print(num + " ");
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者Ronxmaine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:05:26