首页 > 试题广场 >

中位数

[编程题]中位数
  • 热度指数:14979 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数). 给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)

输入描述:
该程序包含多组测试数据,每一组测试数据的第一行为N,代表该组测试数据包含的数据个数,1<=N<=10000.
接着N行为N个数据的输入,N=0时结束输入


输出描述:
输出中位数,每一组测试数据输出一行
示例1

输入

4
10
30
20
40
3
40
30
50
4
1
2
3
4
0

输出

25
40
2
头像 牛客440904392号
发表于 2024-10-01 20:55:48
from statistics import median while True: try: print(int(median([int(input()) for _ in range(int(input()))]))) except: break
头像 philos
发表于 2021-02-07 21:26:11
思路 使用快排思路就可以了,首先我们来回顾一下快速排序,这是一个典型的分治算法。我们对数组 做快速排序的过程是: 分解: 将数组 「划分」成两个子数组 、,使得 中的每个元素小于等于 ,且 小于等于 中的每个元素。其中,计算下标 q 也是「划分」过程的一部分。 解决: 通过递归调用快速排序 展开全文
头像 绘海纳百川
发表于 2023-03-08 15:47:32
#include <stdio.h> #define N 10000 void bubbleSort(int a[],int n){ //冒泡排序 int temp; for(int i=n-1;i>0;i--) for(int j=0;j&l 展开全文
头像 用户抉择
发表于 2021-03-28 11:33:53
#include <stdio.h> int cmp(const void*a,const void *b) //从小到大排序 {     return *(int *)a 展开全文
头像 白色高跟鞋
发表于 2020-06-20 17:47:10
给出一种非排序的方法,复杂度为O(NlogN),但在实际执行时要比排序快(因为并不需要全排序)—— 找到一组数据的中位数,就是找到第lenth/2的数,因此参考此题即可: https://www.nowcoder.com/practice/673454422d1b4a168aed31e449d87 展开全文
头像 Blue_Moon1
发表于 2024-03-26 17:32:02
//程序总不通过的原因可能是没有注意到边界条件,除了n=0之外,n停止输入也是退出循环的条件!!! #include<iostream> #include<algorithm> using namespace std; int main(){ int n; //scan 展开全文
头像 宁静的冬日
发表于 2022-03-07 10:20:29
简单 #include<iostream> #include<string> #include<algorithm> #define MAX 10000 using namespace std; int a[MAX + 1]; int main() { i 展开全文
头像 呜呜呜www
发表于 2023-08-13 10:17:51
#include<stdio.h> int main(){ int n; while(scanf("%d",&n)!=EOF){ if(n==0) return 0 ; int array[n+1]; for(int i=1;i<n+1; 展开全文
头像 勋谦
发表于 2024-06-26 21:45:25
#include <iostream> #include <algorithm> using namespace std; const int N = 1e5 + 10; int main(){ int n; while(cin >> n){ if 展开全文
头像 leahliuliu
发表于 2021-07-01 10:42:56
/* 输入行数不确定 这种类型题目大多是第一个输入为数据的组数,然后会输入这几组数据,即为1+n模式。 所以每组数据的第一个一定是接下来要获取输入的行数,后面这部分相当于已知行数,只需要在上面的基础上添加获取行数逻辑即可。 */ const readline = require('readline' 展开全文