定义一个数组,输入最多二十条数据,输出中位数和众数
定义一个数组,输入最多二十条数据,输出中位数和众数冒泡我百度看懂了,可是数组我学的不太好,希望给点指导
#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编辑过]