dabocaiqq
2020-05-23 21:53
采纳率: 66.6%
浏览 311

高分悬赏:Java语言将数组中的偶数和奇数分别放入2个不同的数组,其中偶数是升序排列,奇数是降序排序

高分悬赏:Java语言将数组中的偶数和奇数分别放入2个不同的数组,其中偶数是升序排列,奇数是降序排序

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

3条回答 默认 最新

  • 毕小宝 2020-06-03 18:57
    已采纳

    算法思路:

    0、定义两个集合对象 list1、list2
    1、遍历数组,是奇数放入list1,偶数加入 list2
    2、使用集合工具类对 list1 和 list2 排序并输出。
    
    打赏 评论
  • QC_chen 2020-05-24 11:01

    提前排好序,后续只需要判断奇偶数就可以了:
    List ins = new ArrayList<>();
    List int1 = new ArrayList<>();
    List int2 = new ArrayList<>();

        Random r = new Random(1);
        for (int i = 10 ;i > 0 ; i --) {
            ins.add(r.nextInt(100));
        }
        Collections.sort(ins);//排序 小-->大
    
        for (Integer in : ins) {
            if(in%2 == 0) {
                int2.add(in);
            }else {
                int1.add(0, in);
            }
        }
    
        System.out.println(ins);
        System.out.println(int1);
        System.out.println(int2);
    
    打赏 评论
  • qybao 2020-05-24 17:51

    可以用stream流来处理,先排序(排序可以一步到位奇数在前升序偶数在后降序)后分组,或者分完组后再排序也可以
    for example

    public class Sample {
        public static void main(String[] args) {
            try {
                List<Integer> list = new ArrayList<>(Arrays.asList(new Integer[] {9,3,2,4,5,1,6,7,8,0})); //测试数据
            //排序:同为奇数则顺序,同为偶数则反序,奇偶不同则奇在前偶在后,分组:按奇偶分组
                Map<Integer, List<Integer>> map = list.stream().sorted((m,n)->
                    ((m%2==n%2) ? (m%2==0 ? n.compareTo(m) : m.compareTo(n)) : (n%2==0&&m%2==1 ? -1 : 1))).collect(Collectors.groupingBy((m)->m%2));
                for (List<Integer> l : map.values()) {
                    System.out.println(l);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    打赏 评论

相关推荐 更多相似问题