看到一个很有意思的题,用二分法求中位数,网络上都是求奇数个整数的中位数,所以写了一个偶数个整数求中位数的代码,最后的输出如果有必要也可以用%f输出(l+r)/2.0
问题描述:(求中位数) 给定n(n 为小于1000)个整数,整数的范围在0~m(0<m<231)之间,请使用二分法求这n 个整数的中位数。
#define _CRT_SECURE_NO_WARNINGS #define MAXN 1000 #include<stdio.h> #include<stdlib.h> void main(){ int n, i, j, count; long lbound, rbound, m,l,r,mid; long x[MAXN]; printf("请输入n:"); scanf("%d", &n); printf("请输入m:"); scanf("%ld", &m); printf("请输入n个整数:"); for (i = 0; i < n; i++) scanf("%ld", &x[i]); lbound = 0; rbound = m; while (lbound < rbound) //二分法运行条件。 { mid = (lbound + rbound) / 2; //中点