读书人

在一群数值中掏出现次数最多的数值

发布时间: 2013-04-02 12:35:26 作者: rapoo

在一群数值中,取出现次数最多的数值, 求算法。
当然,数据集中的数据个数超过了255。
借用外部sql不算。 算法 数据集
[解决办法]
先排序,算法最简单:采用简单循环遍历,记录两个数据值(以往次数最高的值和当前值)和出现次数,循环中发现当前数据值改变则比较这两个次数,调整记录值。一次循环就能完成。

不排序也可以做,算法复杂度不亚于排序本身,还得自己写代码。TStringList 可以自动完成排序,所以先排序最简单。
[解决办法]
通过排序,分组实现吧
[解决办法]

select count(列明1) as 出现次数,列明1 from 表名称 group by 列明1
order by 出现次数 desc

第一条记录就是出现最多的吧。
[解决办法]

引用:
select count(列明1) as 出现次数,列明1 from 表名称 group by 列明1
order by 出现次数 desc

第一条记录就是出现最多的吧。


fish,楼主说了不能借用数据库,呵呵
只能先排序,再统计了,数据量大,排序也花时间啊
[解决办法]
计数排序较适合,不用完全排完
[解决办法]
有2个可能的加速策略:
1. 快速起见,可以自己构建Hash表进行统计。
2. 如果计算到某一时刻,发现Max Count - Secondary Max Count> 剩下元素个数,直接输出当前的Max Count所指向的元素。

读书人网 >.NET

热点推荐