天天看点

浙大pta 基础编程题目集6-11 <求自定类型元素序列的中位数>

嘿,大家好!我是四舍五入两米高的小晨,今天分享的是pta基础编程的第11题。

#1、题目:

浙大pta 基础编程题目集6-11 <求自定类型元素序列的中位数>

##2、源码

ElementType Median( ElementType A[], int N )
{
     //冒泡排序
    for (int i = 0; i <N - 1; i++)
        for (int j = 0; j < N -1- i; j++)
        {
            if (A[j] > A[j + 1])
            {
               float temp = A[j];
                A[j] = A[j + 1];
                A[j + 1] = temp;
            }
        }
  
    if(N%2==0)//偶数个元素
    {
        int n=N/2;
        float ret= A[n-1]>A[n]?A[N-1]:A[n];
        return ret;
    }
     else
     {
         int n=(N-1)/2;
         return A[n];
     }
}
           

###3、总结:

注意题目,如果N为偶数应该所返回的是中间两个数中的最大值,而不是相加除以2,而且此时用的排序应该为希尔排序,用冒泡排序在N很大时会超时,如下图所示。

浙大pta 基础编程题目集6-11 <求自定类型元素序列的中位数>