美文网首页
【MAC 上学习 C++】Day 62-1. 6-11 求自定类

【MAC 上学习 C++】Day 62-1. 6-11 求自定类

作者: RaRasa | 来源:发表于2019-10-26 12:30 被阅读0次

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

    1. 题目摘自

    https://pintia.cn/problem-sets/14/problems/743

    2. 题目内容

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

    函数接口定义:

    ElementType Median( ElementType A[], int N );
    其中给定集合元素存放在数组A[]中,正整数N是数组元素个数。该函数须返回N个A[]元素的中位数,其值也必须是ElementType类型。

    输入样例:

    3
    12.3 34 -5

    输出样例:

    12.30

    3. 源码参考
    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    #define MAXN 10
    typedef float ElementType;
    
    ElementType Median( ElementType A[], int N );
    
    int main ()
    {
        ElementType A[MAXN];
        int N, i;
    
        cin >> N;
        for ( i=0; i<N; i++ )
        {
          cin >> A[i];
        }
    
        cout << fixed << setprecision(2) << Median(A, N) << endl;
    
        return 0;
    }
    
    ElementType Median(ElementType A[], int n)
    {
      int i, j, k;
      ElementType t;
      
      k = n / 2;
      while(k >= 1)
      {
        for(i = k; i < n; i++)
        {
          j = i - k;
          while((A[j + k] < A[j]) && (j >= 0))
          {
            t = A[j];
            A[j] = A[j + k];
            A[j + k]= t;
            
            j -= k;
            
            if(j < 0)
              break;
          }
        }
        k /= 2;
      }
    
      return A[n / 2];
    }
    

    相关文章

      网友评论

          本文标题:【MAC 上学习 C++】Day 62-1. 6-11 求自定类

          本文链接:https://www.haomeiwen.com/subject/uhtbmctx.html