Java练习:定义一共整数数组a,b,两个数组,判断两个数组中的重复的元素以及重复次数

Java课后作业:定义一共整数数组a,b,两个数组,判断两个数组中的重复的元素以及重复次数
问题1:判断两个数组中重叠的元素?
问题2:重叠的元素都重叠了几次,进行排序输出?
本题关键:去重(验证之前是否验证过此数)、排序,(冒泡排序法和选择排序法)、关键字break 和continue 的使用
// Java课后作业:定义一共整数数组a,b,两个数组,判断两个数组中的重复的元素以及重复次数 public static void main(String[] args) { // 定义一个整数数组a,再定义一个整数数组b,两个数组中的元素都有可能有重复元素 // 问题1:统计两个数组a与b的交集(不存在重复元素),一定难度 int[] a = { 1, 2, 2, 3, 1, 3, 2 }; int[] b = { 2, 3, 5, 7, 5, 3, 2, 1 }; // 定义一个数组c,用来储存数组a和数组b中重叠的元素 int clength = a.length < b.length ? a.length : b.length; int c[] = new int[clength]; // 定义一个数组下表位置,不定义的话,数组就会变成[1, 2, 3, 0, 0, 0, 0] int cInexs = 0; for (int i = 0; i < a.length; i++) { // 在遍历数组a的时候,看看前面有没有相同的元素,如果有,直接停止 boolean isYes = false; for (int t = 0; t < i; t++) { if (a[i] == a[t]) { isYes = true; break; } } if (isYes) { continue; } for (int j = 0; j < b.length; j++) { if (a[i] == b[j]) { c[cInexs] = b[j]; cInexs++; break; } } } // 问题2:按出现频率排序 // 既然现在数组c中没有重复的元素,那么就把数组c中的每一个元素拿出出来分别计算一下在数组a和数组b中存在了几次,依次存在数组f中: int f[] = new int[cInexs]; for (int i = 0; i < c.length; i++) { // 统计数组a中在我位置c[i]的数量放在f[i]中 for (int n = 0; n < a.length; n++) { if (c[i] == a[n]) { f[i]++; } } // 统计数组b中在我位置c[i]的数量放在f[i]中 for (int n = 0; n < b.length; n++) { if (c[i] == b[n]) { f[i]++; } } } // 统计出来了那就对数组f进行排序,排序的时候需要注意,数组c与数组f一一对应的关系 // 排序法之冒泡法 // System.out.println("没有排序之前的数组 c 和数组 f"); // System.out.println(Arrays.toString(c)); // System.out.println(Arrays.toString(f)); // for (int i = 0; i < f.length; i++) { // for (int j = i; j < f.length - i - 1; j++) { // if (f[j] > f[j + 1]) { // int t = f[j + 1]; // f[j + 1] = f[j]; // f[j] = t; // // t = c[j + 1]; // c[j + 1] = c[j]; // c[j] = t; // } // } // } // 排序法之选择排序法 for (int i = 0; i < f.length - 1; i++) { for (int j = i - 1; j < f.length - 1; j++) { if (f[i] > f[j + 1]) { int t = f[j + 1]; f[j + 1] = f[j]; f[j] = t; t = c[j + 1]; c[j + 1] = c[j]; c[j] = t; } } } // System.out.println("排序之后的数组 c 和数组 f"); // System.out.println(Arrays.toString(c)); // System.out.println(Arrays.toString(f)); // 最后进行输出: System.out.print("问题1重叠的元素有:"); for (int i = 0; i < cInexs; i++) { System.out.print(c[i]+" "); } System.out.println(); System.out.print("问题2重叠的元素对应的次数依次式"); for (int i = 0; i < cInexs; i++) { System.out.print(f[i]+" "); } }
Java控制台输出结果:
问题1重叠的元素有:1 3 2 问题2重叠的元素对应的次数依次式3 4 5
作者:域名博客,网站地址:https://liuguangfa.com/,转载注明出处!