我试图以一个函数的形式设计一个算法,该函数接受两个参数,一个数组和数组的大小.我希望它返回数组的模式,如果有多种模式,则返回它们的平均值.我的策略是采用数组并首先对其进行排序.然后计算所有出现的数字.当该数字发生时,添加一个计数器并将该计数存储在数组m中.所以m保持所有计数,另一个数组q保持我们比较的最后一个值.
例如:我的列表是{1,1,2,2}
然后我会有m [0] = 4 q [0] = 1
然后m [1] = 3,q [1] = 2.
所以模式是q [0] = 1;
不幸的是,到目前为止我没有成功.希望有人可以提供帮助.
float mode(int x[],int n) { //Copy array and sort it int y[n],temp,k = 0,counter = 0,m[n],q[n]; for(int i = 0; i < n; i++) y[i] = x[i]; for(int pass = 0; pass < n - 1; pass++) for(int pos = 0; pos < n; pos++) if(y[pass] > y[pos]) { temp = y[pass]; y[pass] = y[pos]; y[pos] = temp; } for(int i = 0; i < n;){ for(int j = 0; j < n; j++){ while(y[i] == y[j]) { counter++; i++; } } m[k] = counter; q[k] = y[i]; i--; //i should be 1 less since it is referring to an array subscript k++; counter = 0; } }