zoukankan      html  css  js  c++  java
  • PAT 基础编程题 4-11 求自定类型元素序列的中位数(希尔排序)

    4-11 求自定类型元素序列的中位数   (25分)

    本题要求实现一个函数,求N个集合元素A[]的中位数,即序列中第lfloor N/2 +1 floorN/2+1大的元素。其中集合元素的类型为自定义的ElementType

    函数接口定义:

    ElementType Median( ElementType A[], int N );
    

    其中给定集合元素存放在数组A[]中,正整数N是数组元素个数。该函数须返回NA[]元素的中位数,其值也必须是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
    ", Median(A, N));
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    

    输入样例:

    3
    12.3 34 -5
    

    输出样例:

    12.30

    学习了一下希尔排序,原地算法之一,每一次二分步长,将步长内可到达的每一个数都视为同一组,再对每一组进行直接插入排序,以前一直以为是两两之间排序,样例都过不了……

    代码:

    ElementType Median( ElementType A[], int N )
    {
        int i,j,gap;
        for (gap=N>>1; gap; gap>>=1)
        {
            for (i=gap; i<N; ++i)
            {
                for (j=i-gap; j>=0&&A[j]>A[j+gap]; j-=gap)
                {
                    ElementType temp=A[j];
                    A[j]=A[j+gap];
                    A[j+gap]=temp;
                }
            }
        }
        return A[N>>1];
    }
  • 相关阅读:
    elk
    js时间处理
    idea首次提交项目
    kafka集群zookeeper集群详细配置
    单节点多节点等等详细解释
    kafka原理存储
    Thread-0" kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries.
    如何使用JMeter开源性能测试工具来构建Web性能测试体系
    自动化测试的理解
    VBS教程
  • 原文地址:https://www.cnblogs.com/Blackops/p/5863630.html
Copyright © 2011-2022 走看看