|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求自定类型元素序列的中位数 (25分)
本题要求实现一个函数,求N个集合元素A[]的中位数,即序列中第⌊(N+1)/2⌋大的元素。其中集合元素的类型为自定义的ElementType。
函数接口定义:
ElementType Median( ElementType A[], int N );
其中给定集合元素存放在数组A[]中,正整数N是数组元素个数。该函数须返回N个A[]元素的中位数,其值也必须是ElementType类型。
裁判测试程序样例:
#include <stdio.h>
#define MAXN 10
typedef float ElementType;
ElementType Median( ElementType A[], int N );
int main ()
{
ElementType A[MAXN];
int N, i;
scanf("%d", &N);
for ( i=0; i<N; i++ )
scanf("%f", &A[i]);
printf("%.2f\n", Median(A, N));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
3
12.3 34 -5
输出样例:
12.30
ElementType Median( ElementType A[], int N )
{
int min,i,j;
float t,k;
for(i=0;i<N-1;i++)
{
min = i;
for(j=i+1;j<N;j++)if(A[min]>A[j])min = j;
t = A[i];
A[i] = A[min];
A[min] = t;
}
return A[N/2];
}//为什么我的总有大N,卡时
运行超时这一分得不到
本帖最后由 jackz007 于 2021-1-6 17:43 编辑
- ElementType Median( ElementType A[] , int N)
- {
- ElementType r = 0.0 , t ;
- int i , j ;
- for(i = 0 ; i < N - 1 ; i ++) {
- for(j = i + 1 ; j < N ; j ++) {
- if(A[i] > A[j]) {
- t = A[i] ;
- A[i] = A[j] ;
- A[j] = t ;
- }
- }
- }
- if(N) {
- if(N % 2) r = A[N / 2] ;
- else r = (A[N / 2 - 1] + A[N / 2]) / 2.0 ;
- }
- return r ;
- }
复制代码
|
|