35. 中位数

题目描述

中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数). 给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)

输入描述:

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

输出描述:

输出中位数,每一组测试数据输出一行</pre>

示例1

输入

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

输出

25
40
2
解法
#include <stdio.h>
#include <malloc.h>

#define swap(a, b) (a)^=(b)^=(a)^=(b)    //交换函数

int median(int *num, int len) {
    for (int i = 0; i <= len / 2; i++)    //冒泡排序只排一半
        for (int j = 0; j < len - i - 1; j++) {
            if (num[j] > num[j + 1])
                swap(num[j], num[j + 1]);
        }
    if (len & 1)    //若为奇数个
        return num[len / 2];
    else 
        return (num[len / 2 - 1] + num[len / 2]) / 2;
}

int main() {
    for (int len; ~scanf("%d", &len);) {
        int *num = (int *) malloc (sizeof(int) * len);
        for (int i = 0; i < len; i++)
            scanf("%d", &num[i]);
        printf("%d\n", median(num, len));
        free(num);
    }
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,170评论 6 13
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,819评论 0 10
  • 第一章 概述 一、协议定义 为网络中互相通信的对等实体间进行数据交换二建立的规则、标准或约定,保证实体在计算机网络...
    丿曰阅读 14,300评论 0 6
  • 驾驶考试车辆至指定号码考点的起步线,调整座椅位置,调整反光镜位置,系好安全带,观察车把手位置,打开转向灯。 将车辆...
    种下一棵苹果树阅读 1,686评论 0 0
  • 尝尝幻想 自己失去了重量 我可以平躺在软软的空气上面 安安静静的沉浮 我没有长出翅磅 却也高了一度姿态 看看下面硕...
    艽艽艽艽阅读 197评论 11 6