dabocaiqq
2020-06-09 16:38
采纳率: 66.6%
浏览 262

高分悬赏:Java语言将数组中的奇数按照从大到小的顺序排列,偶数按照从小到大的顺序排列

高分悬赏:Java语言将数组中的奇数按照从大到小的顺序排列,偶数按照从小到大的顺序排列

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 已采纳

    说一下实现思路吧,如果需要时对数组奇数下标的数据按奇和偶数不同下标不同排序,思路如下

    1、收集奇数位数据到数组,利用 Collections 集合的 sort 方法完成排序;
    2、收集偶数的数据,并排序;
    3、创建一个 大数组,奇偶为分别取前面的排序结果。
    

    如果想对整个数组元素的奇偶数排序,就不太好弄,因为个数不同,最终结果怎么处理是个问题。

    点赞 打赏 评论
  • 伱給的囘憶 2020-06-09 17:24

    public static void px(int[] nums) {
    int[] jishu;// 定义一个奇数数组;
    int[] oushu;// 定义一个偶数数组;
    int n = 0;
    for (int i = 0; i < nums.length; i++) {
    if (nums[i] % 2 == 0) {
    n++;
    }
    }
    jishu = new int[nums.length - n];
    oushu = new int[n];

        int count1 = 0;
        int count2 = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] % 2 == 0) {
                count1++;
                oushu[count1 - 1] = nums[i];
            } else {
                count2++;
                jishu[count2 - 1] = nums[i];
            }
    
        }
    
        Arrays.sort(jishu);// 奇数数组排序 从小到大
        Arrays.sort(oushu);// 偶数数组排序 从小到大
    
        // 把奇数排序改为从大到小
        int[] newJsshu = new int[nums.length - n];
        for (int j = 0; j < jishu.length; j++) {
            newJsshu[j] = jishu[jishu.length - j - 1];
        }
        // 打印奇数
        System.out.print("奇数为:");
        for (int i = 0; i < newJsshu.length; i++) {
            System.out.print(newJsshu[i] + " ");
        }
        System.out.println();
        System.out.print("偶数为:");
        for (int i = 0; i < oushu.length; i++) {
            System.out.print(oushu[i] + " ");
        }
    }
    
    
    
    点赞 打赏 评论
  • public static void main(String[] args) {
            Integer[] originalArray = new Integer[] { 1, 10, 9, 2, 3, 8, 11, 15, 16, 20, 18, 4, 5, 6, 21, 23 };// 原数组
            // 原数组打印,顺便记录两个新数组的长度
            Integer evenNumbersLength = 0;// 偶数数组下标
            Integer oddNumberLength = 0;// 奇数数组下标
            StringBuffer originalArraySB = new StringBuffer();
            originalArraySB.append("原数组:[");
            for (Integer num : originalArray) {
                originalArraySB.append(num);
                originalArraySB.append(" ,");
                if (num % 2 == 0) {// 偶数
                    evenNumbersLength++;
                } else {// 奇数
                    oddNumberLength++;
                }
            }
            String originalArrayS = originalArraySB.substring(0, originalArraySB.length() - 2);
            System.out.println(originalArrayS + "]");
    
            Integer[] oddNumberArray = new Integer[oddNumberLength];// 奇数数组
            Integer[] evenNumbersArray = new Integer[evenNumbersLength];// 偶数数组
            Integer i = 0;// 偶数数组下标
            Integer j = 0;// 奇数数组下标
            for (Integer num : originalArray) {
                if (num % 2 == 0) {// 偶数
                    evenNumbersArray[i] = num;
                    i++;
                } else {// 奇数
                    oddNumberArray[j] = num;
                    j++;
                }
            }
            // 偶数数组--正序排列
            Arrays.sort(evenNumbersArray);
            //拼输出字符串
            StringBuffer evenNumbersArraySB = new StringBuffer();
            evenNumbersArraySB.append("偶数数组:[");
            for (Integer num : evenNumbersArray) {
                evenNumbersArraySB.append(num);
                evenNumbersArraySB.append(" ,");
            }
            String evenNumbersArrayS = evenNumbersArraySB.substring(0, evenNumbersArraySB.length() - 2);
            System.out.println(evenNumbersArrayS + "]");
            // 奇数数组--转list 先正序,再反转
            List<Integer> asList = Arrays.asList(oddNumberArray);
            Collections.sort(asList);// 正序
            Collections.reverse(asList);// 反转
            //拼输出字符串
            StringBuffer oddNumberArraySB = new StringBuffer();
            oddNumberArraySB.append("奇数数组:[");
            for (Integer num : asList) {
                oddNumberArraySB.append(num);
                oddNumberArraySB.append(" ,");
            }
            String oddNumberArrayS = oddNumberArraySB.substring(0, oddNumberArraySB.length() - 2);
            System.out.println(oddNumberArrayS + "]");
        }
    
    点赞 打赏 评论
  • qybao 2020-06-10 10:39

    题目不清,一奇一偶怎么排?奇数在前偶数在后?

    public class Sample {
        public static void main(String[] args) {
            Integer a[] = new Integer[] {
                1,2,4,3,5,6,7,8,9,0
            };
                    //直接用数组的sort方法+比较器就可以了(这里是奇数在前偶数在后)
            Arrays.sort(a, (a1,a2)->((a1%2==1&&a2%2==1) ? a2-a1: (a1%2==0&&a2%2==0 ? a1-a2 : (a1%2==1) ? -1 : 1 )));
            System.out.println(Arrays.toString(a));
        } 
    }
    
    点赞 打赏 评论

相关推荐 更多相似问题