在一群数值中,取出现次数最多的数值, 求算法。

wylton 2013-03-15 04:20:15
当然,数据集中的数据个数超过了255。
借用外部sql不算。
...全文
426 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyfhz 2013-03-22
  • 打赏
  • 举报
回复
有2个可能的加速策略: 1. 快速起见,可以自己构建Hash表进行统计。 2. 如果计算到某一时刻,发现Max Count - Secondary Max Count> 剩下元素个数,直接输出当前的Max Count所指向的元素。
hsfzxjy 2013-03-15
  • 打赏
  • 举报
回复
计数排序较适合,不用完全排完
hsfzxjy 2013-03-15
  • 打赏
  • 举报
回复
计数排序较适合,不用完全排完
憨厚小情郎 2013-03-15
  • 打赏
  • 举报
回复
引用 4 楼 feiba7288 的回复:
fish,楼主说了不能借用数据库,呵呵 只能先排序,再统计了,数据量大,排序也花时间啊
额,好吧……慢慢码代码吧。
feiba7288 2013-03-15
  • 打赏
  • 举报
回复
引用 3 楼 i_am_a_fish 的回复:
select count(列明1) as 出现次数,列明1 from 表名称 group by 列明1 order by 出现次数 desc 第一条记录就是出现最多的吧。
fish,楼主说了不能借用数据库,呵呵 只能先排序,再统计了,数据量大,排序也花时间啊
憨厚小情郎 2013-03-15
  • 打赏
  • 举报
回复
select count(列明1) as 出现次数,列明1 from 表名称 group by 列明1 order by 出现次数 desc 第一条记录就是出现最多的吧。
simonhehe 2013-03-15
  • 打赏
  • 举报
回复
通过排序,分组实现吧
静_海 2013-03-15
  • 打赏
  • 举报
回复
先排序,算法最简单:采用简单循环遍历,记录两个数据值(以往次数最高的值和当前值)和出现次数,循环中发现当前数据值改变则比较这两个次数,调整记录值。一次循环就能完成。 不排序也可以做,算法复杂度不亚于排序本身,还得自己写代码。TStringList 可以自动完成排序,所以先排序最简单。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧