llf123456 发表于 2021-1-6 17:13:06

帮帮我吧

求自定类型元素序列的中位数 (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;
    int N, i;

    scanf("%d", &N);
    for ( i=0; i<N; i++ )
      scanf("%f", &A);
    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>A)min = j;
                t = A;
                A = A;
                A = t;
        }
        return A;
}//为什么我的总有大N,卡时       
运行超时这一分得不到

心驰神往 发表于 2021-1-6 17:21:59

来看看

jackz007 发表于 2021-1-6 17:39:18

本帖最后由 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 > A) {
                              t = A               ;
                              A = A            ;
                              A = t               ;
                        }
                }
      }
      if(N) {
                if(N % 2) r = A                   ;
                else r = (A + A) / 2.0 ;
      }
      return r                                       ;
}

风过无痕1989 发表于 2021-1-6 19:00:39

来看看
页: [1]
查看完整版本: 帮帮我吧