计算数组中数字的频率

时间:2010-04-30 00:47:42

标签: java iteration frequency

我有一个数组scores[5][5],并且里面有测试分数。

我需要找到最常出现的分数并将其归还。

5 个答案:

答案 0 :(得分:2)

我只想创建一个HashMap<Integer,Integer>,其中第一个整数是得分数组中的值,第二个是频率。

然后处理散列映射中的数组填充。如果密钥已存在,则将计数加1。如果是新密钥,请将其设置为1。

然后处理hashmap以查找出现次数最多的值。


一旦我访问了安装了Java的机器,我就开始研究源代码了,但是因为它现在标记为家庭作业,所以它只是算法(从长远来看,这对你来说会更好):

Create empty hashmap freq
For each entry in your array (probably nested loops):
    If entry.value is not in freq:
        Add entry.value to freq, set its count to zero
    Increase count of freq.value
Set max_count to 0
For each item in freq:
    If item.count is greater than max_count:
        Set max_list to an empty list
        Set max_count to item.count
    If item.count is equal to max_count:
        Append item.value to max_list
If max_count is greater than 0:
    Output max_count, max_list

这是我将遵循的基本算法,它包含两个顺序循环。

第一个只是创建一个值到计数的映射,以便您以后可以找到最大的计数。

第二个遍历地图并创建一个具有最高计数值的列表。

答案 1 :(得分:1)

嗯,有两个部分:迭代分数并存储每个分数的频率。它们都涉及使用数组/ arraylist。如果您需要更多帮助,我们可以提出问题。 :d

答案 2 :(得分:0)

由于分数可能在有界范围内(例如0..100),因此您可以使用计数数组快速完成此操作。基本上,您正在进行counting sort的第一阶段。

所有可能分数的count0开始,然后对于每个分数s,增加count[s]。处理完所有分数后,请扫描count并查看哪个count[k]最高。

您还可以在计算时跟踪最常见的分数。做这样的事情:

// init
mostFrequent = 0;

// during increment
count[s]++;
if (count[s] > count[mostFrequent]) {
  mostFrequent = s;
}

由于您的分数是以二维矩阵排列的(出于某种原因?),您可以按如下方式处理每个分数:

int[] count = new int[RANGE]; // valid scores are 0..RANGE-1

mostFrequent = 0;
for (int[] tuplet : scores) {
   for (int s : tuplet) {
     count[s]++;
     if (count[s] > count[mostFrequent]) {
        mostFrequent = s;
     }
   }
}

report(mostFrequent, count[mostFrequent]);

答案 3 :(得分:0)

或者随时指向当前最大的指针。每次创建或更新时,请比较以查看是否刚刚超过之前的最大值并替换它(如果有)。 保存另一个遍历hashmap的传递。

答案 4 :(得分:0)

对于这样的事情,编写代码来模拟你在现实生活中的表现。

我们的模特:

你的[5] [5]数组:它只是一个包含5列5行的数字网格。

从0,0位置开始 - 读取该位置的值,并启动一个列表(在Java中,在ArrayList或HashMap中),将该数字添加到列表中并给它一个井号(值为1),表明你已经看过一次了。

穿过行,然后向左和向后行,等等。

您阅读的每个号码,请检查它是否已列在您的列表中。如果是,只需再创建一个哈希标记(加1)。如果没有,那么将数字添加到列表中并给它一个井号。

读完数组后,从头开始查看列表,并通过将手指放在上面跟踪您看到的最多哈希标记的数字(将数字存储在变量中)。 / p>

返回最后一个变量。