首页 > 试题广场 >

中位数

[编程题]中位数
  • 热度指数:13948 时间限制: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
def bubble(a):
    for i in range(len(a) - 1):
        for j in range(len(a) - 1 - i):
            if a[j] > a[j+1]:
                t = a[j]
                a[j] = a[j+1]
                a[j+1] = t
    return a

def mid(a):
    a = bubble(a)
    # print(a)
    if len(a) % 2 == 0:
        i1 = int(len(a) / 2)
        i2 = int(len(a) / 2) - 1
        m = (a[i1] + a[i2]) / 2
    else:
        i = int(len(a) / 2)
        m = a[i]
    return int(m)


while True:
    try:
        arr = []
        n = int(input())
        for _ in range(n):
            a = int(input())
            arr.append(a)
        res = mid(arr)
        print(res)
    except:
        break

编辑于 2024-03-11 12:26:26 回复(0)