定义一个数组,输入最多二十条数据,输出中位数和众数
定义一个数组,输入最多二十条数据,输出中位数和众数冒泡我百度看懂了,可是数组我学的不太好,希望给点指导

程序代码:#define N 20
int a[N];
int compare(const int *i, const int *j)
{
return *(int*)i - *(int*)j;
}
void Cla(int *a,int n,int *mode, double *median)
{
int b[N];
int i,max,maxi;
qsort(a, n, sizeof(int), compare);
if (n % 2 == 0) *median = ((double)a[n / 2] + a[n / 2 + 1]) / 2;
else {
*median = (double)a[n / 2 + 1];
}
b[0] = 1;
for (i = 1;i < n;i++) {
if (a[i] == a[i - 1]) {
b[i] =b[i-1]+1;
}
else
b[i] = 1;
}
max = b[0];maxi = 0;
for (i = 1;i < n;i++) {
if (b[i] >= max) {
max = b[i];
maxi = i;
}
}
*mode = a[maxi];
}
当然这个程序还是有一些bug的,比如说众数,这个程序只能输出一个众数,当一个数列中两个元素出现相同次数的时候,只能得到一个。还有就是这个函数已经修改了原来数组的顺序。使用的时候要先手动备份数组。[此贴子已经被作者于2017-4-4 17:12编辑过]
