嘿,大家好!我是四舍五入两米高的小晨,今天分享的是pta基础编程的第11题。
#1、题目:
##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很大时会超时,如下图所示。