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

admin2012-06-21  77

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

选项

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

解析
转载请注明原文地址:https://kaotiyun.com/show/CAxi777K
0

最新回复(0)