本题要求实现一个函数,求N
个集合元素A[]
的中位数,即序列中第⌊N/2+1⌋大的元素。其中集合元素的类型为自定义的ElementType
。
分析:这道题目,刚开始以为简单的排序就可以了,用了快速排序,出现了运行超时,和部分答案正确的结果;
此题运用c语言中的qsort函数。
#include<math.h>
#include<stdlib.h>
int cmp(const void *a,const void *b)
{
if(fabs(*(ElementType *)a - *(ElementType *)b)<1*exp(-20))
{
return 0;
}
else
{
return ((*(ElementType *)a > *(ElementType *)b)?1:-1);
}
}
ElementType Median( ElementType A[], int N )
{
qsort(A,N,sizeof(ElementType),cmp);
return A[N/2];
}
下面详细介绍一下qsort的用法:
以下内容转载自:
https://blog.csdn.net/zhaozicang/article/details/24174965
qsort函数包含在<stdlib.h>中
qsort函数声明如下:
void qsort(void * base,siz