我试图以函数的形式设计一个算法,该函数接受两个参数,一个数组和数组的大小.我希望它返回数组的模式,如果有多种模式,则返回它们的平均值.我的策略是采用数组并首先对其进行排序.然后计算所有出现的数字.当该数字发生时,添加一个计数器并将该计数存储在数组m中.所以m保持所有计数,另一个数组q保持我们比较的最后一个值.
例如:我的名单是{1, 1, 1, 1, 2, 2, 2}
我的m[0] = 4 q[0] = 1
and then m[1] = 3 and 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++) …Run Code Online (Sandbox Code Playgroud) Key value
1-5 A
7-10 B
11-15 C
Run Code Online (Sandbox Code Playgroud)
如果输入为4,则输出A,输入为8,输出为B,依此类推.我可以使用哪种数据结构来存储以下数据,因此您不应多次存储值.
我说HashMap,但效率不高.
PS我在面试时被问过.