数组奇偶交叉重组
对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数,若奇数和偶数不等长,则把剩下的直接放到数组中。
思路:先进行奇偶判断,得到奇数和偶数数组。然后对两数组排序,进行长度判断,最后组织数据。
难点在于最后的数据重组,特别是在两个数组长度不相等的情况下。
package com.liuhao; import java.util.Arrays; import java.util.Scanner; public class OddEvenNum2 { public static void main(String[] args) { System.out.println("请输入一组数字,以空格间隔,以回车结束:"); Scanner scan = new Scanner(System.in); // 由于不知道输入的元素个数,故只能先读入到字符串中,然后进行分割 String str = scan.nextLine(); String[] strArr = str.split("\\s+"); int n = strArr.length; int[] input = new int[n];// 存放输入数据 int[] output = new int[n];// 存放最终交叉后的数据 int[] oddArr = new int[n];// 存放奇数 int[] evenArr = new int[n];// 存放偶数 int oddNum = 0;// 奇数个数 int evenNum = 0;// 偶数个火速 for (int i = 0; i < n; i++) { input[i] = Integer.parseInt(strArr[i]); } // 对奇偶进行区分,分别放到各自分数组中 for (int i = 0; i < n; i++) { if (0 == input[i] % 2) { evenArr[evenNum++] = input[i]; } else { oddArr[oddNum++] = input[i]; } } // 删除多余的0 oddArr = Arrays.copyOfRange(oddArr, 0, oddNum); evenArr = Arrays.copyOfRange(evenArr, 0, evenNum); // 从小到大进行排序 Arrays.sort(oddArr); Arrays.sort(evenArr); oddNum = 0; evenNum = 0; for (int i = 0; i < n;) { //当奇数添加完之后。这个if语句便不在执行 if (oddNum < oddArr.length) { output[i++] = oddArr[oddNum++]; } if (evenNum < evenArr.length) { output[i++] = evenArr[evenNum++]; } } System.out.println("初始输入:"); for (int i = 0; i < input.length; i++) { System.out.print(input[i] + " "); } System.out.println("\n奇数集合:"); for (int i = 0; i < oddArr.length; i++) { System.out.print(oddArr[i] + " "); } System.out.println("\n偶数集合:"); for (int i = 0; i < evenArr.length; i++) { System.out.print(evenArr[i] + " "); } System.out.println("\n交叉后的结果:"); for (int i = 0; i < output.length; i++) { System.out.print(output[i] + " "); } } }
运行结果:
请输入一组数字,以空格间隔,以回车结束:
12 3 4 34 35 12 4 574 34 654 234 56 67 23 56 34 57 31 46
初始输入:
12 3 4 34 35 12 4 574 34 654 234 56 67 23 56 34 57 31 46
奇数集合:
3 23 31 35 57 67
偶数集合:
4 4 12 12 34 34 34 46 56 56 234 574 654
交叉后的结果:
3 4 23 4 31 12 35 12 57 34 67 34 34 46 56 56 234 574 654
相关推荐
2012校园编程大赛--试题\华为2012校园编程大赛--试题
华为校招高频选择题-1;华为校招高频选择题-1;华为校招高频选择题-1华为校招高频选择题-1;华为校招高频选择题-1;
华为认证HCIE-RS3.0-LAB1-OptioneC2 题目 华为认证HCIE-RS3.0-LAB1-OptioneC2 题目 华为认证HCIE-RS3.0-LAB1-OptioneC2 题目
华为校招高频选择题-2;华为校招高频选择题-2;华为校招高频选择题-2;华为校招高频选择题-2;华为校招高频选择题-2;
【免费题库】华为OD机试 - 数组二叉树(Java & JS & Python & C & C++).html
【免费题库】华为OD机试 - 数组连续和(Java & JS & Python & C & C++).html
华为认证HCIE-RS3.0-LAB1-OptioneC1 题目 华为认证HCIE-RS3.0-LAB1-OptioneC1 题目
【免费题库】华为OD机试 - 数组组成的最小数字(Java & JS & Python & C & C++).html
删除数组中的某个元素 C语言 - 删除数组中的指定元素(Delete).pdf C语言 - 删除数组中的指定元素(Delete).pdf C语言 - 删除数组中的指定元素(Delete).pdf C语言 - 删除数组中的指定元素(Delete).pdf C语言 -...
目录: 1-0 售前技能交流 1-1华为园区交换机主打胶片 ...2-5华为云管理网络交流 2-6华为安全产品及解决方案介绍 2-7华为SD-WAN解决方案 第1天上午.mp4 第1天下午.mp4 第2天上午.mp4 第2天下午.mp4
华为考试试题-答案.pdf华为考试试题-答案.pdf华为考试试题-答案.pdf华为考试试题-答案.pdf华为考试试题-答案.pdf华为考试试题-答案.pdf华为考试试题-答案.pdf华为考试试题-答案.pdf华为考试试题-答案.pdf
华为综合学习资料01华为网络基础pdf 华为综合学习资料02rip.pdf 华为综合学习资料-03-ospf.pdf 华为综合学习资料-04-路由操纵pdf 华为综合学习资料05广域网技术pdf 华为综合学习资料06-防火墙 ACL NAT 华为综合学习...
路由与交换技术(华为设备)第一讲---交换网络技术.pdf路由与交换技术(华为设备)第一讲---交换网络技术.pdf路由与交换技术(华为设备)第一讲---交换网络技术.pdf路由与交换技术(华为设备)第一讲---交换网络技术.pdf路由...
2012华为校招上机C&C++试题,想进入华为的可以多做点儿上机题,挺有用的
华为网络工程师初级认证H35-560-HCNA-LTE(覆盖百分之75).pdf
最新华为校招C++机试题总结和答案
笔试对大学大四找工作的同学很有帮助华为公司2007应届生试题-研发软件类
本资料详细介绍了华为技术有限公司校招流程、面试注意事项,汇聚了华为公司历年校园招聘的笔试题目和答案解析
硬件测试华为校招·硬件技术工程师机考试题及答案.docx
华为校招_硬件技术工程师机考试题及答案.docx