之前在CSDN上提过类似的问题,就是:一个数组中有N个元素,找出其中重复次数最多的那个元素?原来的问题的假设条件是***没有重复次数相同的两个不同元素***,例如{1,1,2,2,4,4,4,4,5,5,6,6,6},就是要找出4,之前CSDN上的一位大侠提供了一种算法,虽然不一定是最好的,但是对于我却是实用的。 但是我现在得到的原始数组中***存在重复次数相同的两个不同元素***,例如{1,1,2,2,2,3,3,3,4,4,4},这样的话就需要把2,3,4都找出来。而CSDN上的大侠提供的算法就不是很好了。并且数组中的情况是不确定的,也有可能是{1,1,1,2,2,3,3,3},所以算法要有一定的通用性。 另外,数组中的元素是任意顺序的,也就是没有经过排序的,如果这样难以实现的话,可以先实现已经排序了的,就像我举出的例子那样。 最后还有一点要说明的是,最好使用C实现的,不要用C++,因为这个算法我最终是要移植到嵌入式系统中的,有些东西不支持,我之前让一个朋友写过一个算法,可是里面用到了new和delete这样的关键字,是我的系统不支持的,所以就来麻烦各位大侠了,小弟谢谢先~~~ |