租车网济南:这个题怎么编?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 20:35:05
中位数(Median)是将一组数从小到大排好后居中的数;如果这一组数的个数为奇数,那么中位数是存在的;但若个数为偶数,就没有中间的那一个数了,因此取居中两个数的平均数。例如,3,1,7,5,9经过排列后是1,3,5,7,9,所以中位数是5;但3,1,7,5,9,4经过排列得到1,3,4,5,7,9,所以中位数就是(4+5)/2=4。为了方便,用整数计算,编写一个程序,接收一个整数数组,不必排大小而找出该数组的中位数。

#define N 10
int median(int a[],int n)
{
int small[N],i,j;
for(i = 0;i<N;i++) small[i]= 0;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j]) small[i]++;
else small[j]++;
}
}
for(i=0;i<n;i++)
if(small[i]==(n-1)/2) break;
for(j=0;j<n;j++)
if(n-1-small[j]==(n-1)/2) break;
return (a[i]+a[j])/2;
}

自己画decision tree,然后看吧。

另外,用quicksort的分组思想来找中位数 ? 只是提议。