计算数组中值出现次数的最佳方法是什么?

时间:2011-11-24 23:26:34

标签: c function pointers parameters

我被赋予编写程序的任务,该程序将文本文件中的多个赋值标记读入数组,然后计算特定括号内的标记数,即40-49,50-59等。文本文件中的值为-1表示未分配赋值,值为0表示赋值非常严重,未分配。

我可以使用几个for循环轻松完成此操作,然后使用if语句检查值,同时增加适当的整数以计算出现的次数,但是为了获得更高的分数我需要以“更好”的方式实施该计划。什么是更好,更有效的方法呢?我现在不是在寻找代码,只是简单地说“这就是你应该做的”。我试图想出不同的方法来做到这一点,但它们似乎都没有更好,我觉得好像我只是想让它变得复杂。

我尝试使用存储值的2D数组作为函数的参数,然后使用该函数打印出特定值的出现次数,但我无法将其编译为我的使用2D数组作为参数的语法是错误的,我不太清楚如何做到这一点。

任何帮助都将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:1)

为什么你需要一对for循环?一个就够了。

创建一个大小为10的数组,其中array [0]为0-9之间的标记,array [1]为10-19之间的标记等。当您看到一个数字时,使用整数除法将其放入相应的数组桶中,例如阵列[(int)的标记/ 10] ++。完成后,数组将包含每个桶中标记数的计数。

答案 1 :(得分:1)

作为思考的食物,如果这是一项学校作业,你可能想要应用你在课程中学到的其他东西。

你学习排序了吗?也许您可以先对列表进行排序,这样您就不会多次遍历数组。你可以重复一次,抓住所有的-1,并吐出你有多少,然后抓住下一个括号中的所有,依此类推。

编辑:当然,假设你使用的是1d数组。