首页 > 代码库 > 中位数
中位数
数组
第10题
【描述】
中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数或最中间两个数据的平均值(如果这组数的个数为奇数,则中位数为位于中间位置的那个数;如果这组数的个数为偶数,则中位数是位于中间位置的两个数的平均值)。
给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)。
【输入】
包含多组测试数据,每一组测试数据的第一行为n,代表该组测试数据包含的数据个数,1 <= n <=10000。
接着n行为n个数据。n为0时结束输入。
【输出】
输出中位数,每一组测试数据输出一行。
【输入示例】
4
10
30
20
40
3
40
30
50
4
1
2
3
4
0
【输出示例】
25
40
2
#include<stdio.h> //一开始忘记排序了 void queue(int a[],int i){ //a[]前要加类型名,[]里面不用加数字 int t,p,temp; for(t=0;t<i;t++) for(p=0;p<i-t;p++){ if(a[p]>a[p+1]){ temp=a[p+1]; a[p+1]=a[p]; a[p]=temp; }//一开始这里的if的{}忘记加了,导致结果为0; } } int main(){ int n,i=0,t,mid; int a[100]; while(1){ scanf("%d",&n); if(n==0) break; while(n--){ scanf("%d",&a[i++]); }//这之后n无效了,有i个数据 queue(a,i); //实参里的数组只需要一个数组名a就行了,不用[] if(i%2==0) printf("%d\n",(a[i/2]+a[i/2-1])/2); else printf("%d\n",a[(i-1)/2]); i=0; } }
中位数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。