问题 问答题

序列的“中值记录”指的是:如果将此序列排序后,它是第n/2个记录。试写出一个求中值记录的算法。

答案

参考答案:算法如下:
typedef struct{
int gt;//大于该记录的个数
int lt;//小于该记录的个数
}place;
int Get_Mid(int a[],int n)
{
place b[MAXSIZE];
/*对第i个元素统计比它大和比它小的元数的个数,分别为gt和It*/
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if(a[j]>aEi])b[i].gt++;
if(a[j]<a[i])b[i].It++;
}
int mid=0;
/*找出gt值与It值最接近的元素,即为中值记录*/
int min_dif=abs(b[0].gt-b[0].It);
for(int i=0;i {
if(abs(b[i].gt_b[i].It)<min_dif;
mid=i:
}
return mid;
}

选择题
判断题