使用阵列中元素的一个阵列打印频率?

时间:2014-04-24 05:42:54

标签: c

编写一个名为occurrence的算法,给定一个数字A数组,打印A中的所有不同值,然后是其出现次数。

例如,如果A = <28, 1, 0, 1, 0, 3, 4, 0, 0, 3>,算法应输出以下五行(此处用分号28 1; 1 2; 0 4; 3 2; 4 1分隔。

该算法可能会修改A的内容,但可能不会使用任何其他内存。 每个不同的值必须打印一次。 值可以按任何顺序打印。

1 个答案:

答案 0 :(得分:2)

可能的解决方案将包含两个步骤:

  1. 对数组进行排序
  2. 迭代存储当前值及其出现次数的数组,并在当前值更改时打印当前值/计数对
  3. 此解决方案不需要额外的内存,并且具有复杂度O(n * log(n)),因为排序是算法中“最重”的部分