鱼C论坛

 找回密码
 立即注册
查看: 2091|回复: 3

[已解决]帮帮我吧

[复制链接]
发表于 2021-1-6 17:13:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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,卡时       
运行超时这一分得不到
最佳答案
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[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                                         ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-6 17:21:59 | 显示全部楼层
来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[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                                         ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-6 19:00:39 | 显示全部楼层
来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-10 11:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表