2026/1/10 11:22:09
网站建设
项目流程
邯郸哪儿做网站便宜,小程序制作拼图,优设网页,应用商店下载安装app(新卷,100分)- 查找众数及中位数#xff08;Java JS Python C#xff09;题目描述众数是指一组数据中出现次数量多的那个数#xff0c;众数可以是多个。中位数是指把一组数据从小到大排列#xff0c;最中间的那个数#xff0c;如果这组数据的个数是奇数…(新卷,100分)- 查找众数及中位数Java JS Python C题目描述众数是指一组数据中出现次数量多的那个数众数可以是多个。中位数是指把一组数据从小到大排列最中间的那个数如果这组数据的个数是奇数那最中间那个就是中位数如果这组数据的个数为偶数那就把中间的两个数之和除以2所得的结果就是中位数。查找整型数组中元素的众数并组成一个新的数组求新数组的中位数。输入描述输入一个一维整型数组数组大小取值范围 0N1000数组中每个元素取值范围 0E1000输出描述输出众数组成的新数组的中位数用例输入10 11 21 19 21 17 21 16 21 18 15输出21输入2 1 5 4 3 3 9 2 7 4 6 2 15 4 2 4输出3输入5 1 5 3 5 2 5 5 7 6 7 3 7 11 7 55 7 9 98 9 17 9 15 9 9 1 39输出7题目解析逻辑题。具体逻辑请看代码注释。Java算法源码import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); Integer[] nums Arrays.stream(sc.nextLine().split( )).map(Integer::parseInt).toArray(Integer[]::new); System.out.println(getResult(nums)); } public static int getResult(Integer[] nums) { HashMapInteger, Integer count new HashMap(); // 统计各数字出现次数 for (int num : nums) { count.put(num, count.getOrDefault(num, 0) 1); } // 获取最大出现次数 int max count.values().stream().max((a, b) - a - b).orElse(0); // 将众数挑选出来 ArrayListInteger ans new ArrayList(); for (Integer k : count.keySet()) { if (count.get(k) max) ans.add(k); } // 众数升序 ans.sort((a, b) - a - b); // 中位数取值 int mid ans.size() / 2; if (ans.size() % 2 0) { // 偶数个数时取中间两个位置的平均值 return (ans.get(mid) ans.get(mid - 1)) / 2; } else { // 奇数个数时取中间位置的值 return ans.get(mid); } } }JS算法源码/* JavaScript Node ACM模式 控制台输入获取 */ const readline require(readline); const rl readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on(line, (line) { const nums line.split( ).map(Number); console.log(getResult(nums)); }); function getResult(nums) { const count {}; // 统计各数字出现次数 for (let num of nums) { count[num] (count[num] ?? 0) 1; } // 获取最大出现次数 const max Math.max(...Object.values(count)); // 将众数挑选出来 const mode []; for (let k in count) { if (count[k] max) mode.push(parseInt(k)); } // 众数升序 mode.sort((a, b) a - b); // 中位数取值 const mid Math.floor(mode.length / 2); if (mode.length % 2 0) { // 偶数个数时取中间两个位置的平均值 return Math.floor((mode[mid] mode[mid - 1]) / 2); } else { // 奇数个数时取中间位置的值 return mode[mid]; } }Python算法源码# 输入获取 nums list(map(int, input().split())) # 算法入口 def getResult(): count {} # 统计各数字出现次数 for num in nums: count[num] count.get(num, 0) 1 # 获取最大出现次数 maxCount max(count.values()) # 将众数挑选出来 mode [] for k in count: if count[k] maxCount: mode.append(int(k)) # 众数升序 mode.sort() # 中位数取值 mid len(mode) // 2 if len(mode) % 2 0: # 偶数个数时取中间两个位置的平均值 return (mode[mid] mode[mid - 1]) // 2 else: # 奇数个数时取中间位置的值 return mode[mid] # 算法调用 print(getResult())C算法源码#include stdio.h #include stdlib.h #define MAX(a,b) ((a) (b) ? (a) : (b)) #define MAX_SIZE 1000 #define MAX_VAL 1000 int cmp(const void* a, const void* b) { return (*(int*) a) - (*(int*) b); } int main() { // 输入数组 int nums[MAX_SIZE] {0}; int nums_size 0; while(scanf(%d, nums[nums_size])) { if(getchar() ! ) break; } // 每个数的出现次数 int count[MAX_VAL] {0}; // 最大出现次数 int maxCount 0; for(int i0; inums_size; i) { count[nums[i]]; maxCount MAX(maxCount, count[nums[i]]); } // 众数数组 int mode[MAX_SIZE] {0}; int mode_size 0; for(int i0; iMAX_VAL; i) { // 如果该数的出现次数是最大出现次数则是众数 if(count[i] maxCount) { mode[mode_size] i; } } // 众数数组升序 qsort(mode, mode_size, sizeof(int), cmp); // 取众数数组的中位数 int mid mode_size / 2; if(mode_size % 2 0) { printf(%d\n, (mode[mid] mode[mid - 1]) / 2); } else { printf(%d\n, mode[mid]); } return 0; }