精易论坛

标题: 极速统计数组重复并分类(9.12更新) [打印本页]

作者: birdmanxp    时间: 2015-9-11 21:54
标题: 极速统计数组重复并分类(9.12更新)
本帖最后由 birdmanxp 于 2015-9-12 10:53 编辑

之前看到有个定制帖
  1. 数组取每个成员重复次数,并分类列出  数组可呢个比较大 有10万成员左右
复制代码

感觉很有挑战意义,虽然有人已经接单完成了,但因为这种情况很典型,所以有必要跟易友交流互相促进
先讲下算法吧
主要里利用“节点”的特性优化速度,此法速度也许算不上最快的,但算法肯定是最简单的
节点特性1:节点类似与哈希表,当向节点内加入一个新属性时,返回成功,当向节点内加入一个已存在的同名属性时则返回失败,利用这个特性可以很容易判断数组成员是不是重复
节点特性2:虽然无法加入同名的属性,但却可以修同名属性的属性值,利用这点可以记录每个数组成员的重复次数
由此可见,只需要一次计次循环就能完成数组去重+分类统计重复次数,相对于嵌套多层循环比对的方法效率要高得多

根据反复测试的结果,发现一个重要的规律
当数组成员数一样时,统计耗时跟去重后的成员数成反比,也就是说同样为10万数组,去重后为1000个成员的耗时比去重后为100个成员耗时多8~10倍左右
为什么会有这种规律?应该是节点的另一个特性:加入新属性耗时修改已有的属性值要慢得多

以上为本人的一点愚见,欢迎有大神可以分享效率更高的算法。
9.12日重要更新
根据@猥琐小胖子和@ANJIANTEST大神的提示,增加了哈希表法,对于完全不重复的数组统计的效率要比节点法高几百倍(1秒内可以完成10万数组统计分类)。

旧版源码回复可见
新版源码回复可见





补充内容 (2015-10-5 19:29):
2015.10.5修复哈希表统计错误的bug,感谢@兮若残伤的反馈!

补充内容 (2015-10-5 19:38):
请到77楼下载最新修复的源码!

统计重复.rar

18.04 KB, 下载次数: 333, 下载积分: 精币 -2 枚


作者: oldlee    时间: 2015-9-11 21:56
沙发我的,前排围观大神
作者: ANJIANTEST    时间: 2015-9-11 22:00
来看看   你这个目测最大值如果是10w会慢很多
作者: 人辞    时间: 2015-9-11 22:04
看看、、、、
作者: ANJIANTEST    时间: 2015-9-11 22:15
思路都一样的,只是换成高效的hash表就是了.
作者: birdmanxp    时间: 2015-9-11 22:18
ANJIANTEST 发表于 2015-9-11 22:15
思路都一样的,只是换成高效的hash表就是了.

多谢指点,哈希表真不熟悉,我研究下
作者: 阿星Star    时间: 2015-9-11 22:27
看看思路   谢谢了

作者: 猥琐小胖子    时间: 2015-9-11 22:35
一直用第3个方法。之前用节点的筛选数组的数据好慢。还没10w那么多。 文本去重复3个方法.rar (25.34 KB, 下载次数: 17)


作者: 阿星Star    时间: 2015-9-11 22:38
猥琐小胖子 发表于 2015-9-11 22:35
一直用第3个方法。之前用节点的筛选数组的数据好慢。还没10w那么多。

你这个方法2 不就是哈希表么
作者: birdmanxp    时间: 2015-9-11 23:11
猥琐小胖子 发表于 2015-9-11 22:35
一直用第3个方法。之前用节点的筛选数组的数据好慢。还没10w那么多。

方法3貌似跟微凉大神的”吃尾算法“差不多。哈希表的对象用法还真没接触过。
作者: 腾龙跃然    时间: 2015-9-11 23:55
前排围观大神
作者: GreenLan    时间: 2015-9-12 00:51
看看                        

作者: 漫天飞心    时间: 2015-9-12 02:37
来学下下啊

作者: 漫天飞心    时间: 2015-9-12 02:38
来学下下啊

作者: 隔世經年    时间: 2015-9-12 08:46
谢谢分享!看看
作者: 陌落    时间: 2015-9-12 08:58
        感谢分享.......
作者: kat    时间: 2015-9-12 09:01
来学习下


作者: 指尖流淌    时间: 2015-9-12 09:25
看看,学习下!~~
作者: 阿刻凡    时间: 2015-9-12 10:14
努力学习中。看看吧

作者: dai197022    时间: 2015-9-12 11:02
大神的东西 好好看看


作者: Hoibben    时间: 2015-9-12 11:07
这个不错 支持~        
作者: 流星雨    时间: 2015-9-12 11:53
欢迎有大神可以分享效率更高的算法
作者: hljmake    时间: 2015-9-12 11:58
很给力啊啊

作者: 活り    时间: 2015-9-12 15:50
虽然不知道是什么。但是好像好厉害的样子。

作者: 笨猴    时间: 2015-9-12 17:55
虽然不知道是什么。但是好像好厉害的样子。

作者: 方格安卓    时间: 2015-9-12 18:11
大神的东西 好好看看

作者: Seven3in    时间: 2015-9-12 23:48
好东西!支持~
作者: 酷易自绘    时间: 2015-9-13 06:46
我回复,我可见!!

作者: 冬天1111    时间: 2015-9-13 08:14
学习了,感谢分享
作者: 鹏鹏2014    时间: 2015-9-13 08:34
学习一下数组,谢谢

作者: 壩火柴    时间: 2015-9-13 08:50
我觉得楼主说的挺有道理。这个去重的方法类似桶排序。
作者: InstallTest    时间: 2015-9-13 09:33
向高手学习。
作者: 闲客    时间: 2015-9-13 13:05
太想要这个了
作者: 江楠    时间: 2015-9-13 13:29
看一下                 
作者: 1019198992    时间: 2015-9-13 13:33
支持一下
作者: wdwlrz    时间: 2015-9-13 23:32
回复看看哈
作者: a9421z    时间: 2015-9-13 23:54
很神奇的,,,,,,,,,,,,,,{:soso_e102:}

作者: bluesky10    时间: 2015-9-14 00:26
分享是一种美德,感谢楼主
作者: InstallTest    时间: 2015-9-14 08:15
学习一下,厉害。
作者: shandmail    时间: 2015-9-14 13:28
谢谢楼主的分享!这个绝对要顶!!!
作者: 网络注册网员    时间: 2015-9-14 14:28
我来顶一下
作者: 田戈    时间: 2015-9-14 14:44
不错谢谢分享

作者: ℡春花秋月    时间: 2015-9-14 16:25
学习一下,厉害。
作者: 家范    时间: 2015-9-14 17:09
顶楼主了!希望楼主多多发精华贴!!
作者: 登峰望岳    时间: 2015-9-14 17:39
感谢分享,学习了

作者: 宁缺勿滥;    时间: 2015-9-14 22:37
老规矩,先回后下!!!!!!!

作者: InstallTest    时间: 2015-9-15 08:14
支持了,学习了。
作者: hanwenlou    时间: 2015-9-15 08:48
帖子精不精辟 要看帖子内容 哈哈

作者: 蓝冰点点    时间: 2015-9-15 11:55

看一下,学习学习
作者: fydcr    时间: 2015-9-15 15:39
新版速度算法
作者: xshn    时间: 2015-9-15 17:46
最近正需要这方面的代码,看看先
作者: kingwang    时间: 2015-9-16 00:18
最近正需要这方面的代码,看看先
作者: wolongoyca    时间: 2015-9-16 08:29
下下来学习学习
作者: InstallTest    时间: 2015-9-16 11:09
看看吧,好用啊。
作者: Shanks    时间: 2015-9-16 12:10
下载了看看!

作者: q97012791    时间: 2015-9-16 15:02
不错 有钻研精神
作者: mzp87108    时间: 2015-9-16 15:50
大神学习大神学习大神学习
作者: yinghao2005    时间: 2015-9-16 15:51
可以哦不错很强大 的说

作者: Hi启程    时间: 2015-9-16 20:24
{:soso_e102:}
作者: EExiaolin    时间: 2015-9-16 23:54
灰常给力 灰常感谢
作者: smouren    时间: 2015-9-17 03:50
谢谢分享了
作者: 萧然    时间: 2015-9-17 09:06
非常支持!!
作者: xuyongpan    时间: 2015-9-17 09:52
很牛叉的样子
作者: 无语凝噎    时间: 2015-9-17 14:16
学习下,呵呵
作者: 復╅道行}空    时间: 2015-9-17 15:19
来学习下。多谢分享

作者: 徒弟    时间: 2015-9-18 00:25
汇编得个高级玩意
作者: 恶魔の佐翼    时间: 2015-9-18 00:33
kankan...........
作者: hellohexiang    时间: 2015-9-18 12:17
感谢分享
作者: InstallTest    时间: 2015-9-18 13:08
真不错哦。。看看。
作者: wjswzj0    时间: 2015-9-18 15:15
感谢分享,很给力!~
作者: 阿优    时间: 2015-9-18 16:08
旧版源码回复可见旧版源码回复可见

作者: 黑白郎君    时间: 2015-9-23 07:54
来学习下!!!!!!!!!!
作者: l0447195    时间: 2015-9-24 21:49
支持来源 谢谢分享
作者: zhuhai82475    时间: 2015-9-27 02:43
支持来源 谢谢分享
作者: 已注销291880    时间: 2015-10-1 22:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: 初晴雨后    时间: 2015-10-2 19:52
不错,严重支持下
作者: ΒΜΧ    时间: 2015-10-3 23:11
看看 啊  哪里
作者: birdmanxp    时间: 2015-10-5 19:28
感谢@兮若残伤的反馈,发现bug已经修复,更新源码,请重新下载!主要更新:
1、修复哈希表法的统计错误bug
2、将最大值设置为0生成数据可对比节点法和哈希表法的巨大差距(至少100倍以上),一定要编译成exe再测试,不然会等哭的!
统计重复.rar (17.42 KB, 下载次数: 616)


作者: wuhalang0302    时间: 2015-10-7 15:01
好东西啊。。。 学习了。。。
作者: myff108    时间: 2015-10-9 13:27
zhenghaoxuyao ,xiexiele
作者: whs888    时间: 2015-10-16 21:26
学习中,正需要,顶起来!
作者: hui135135    时间: 2015-10-17 00:39
谢谢分享,下载学习
作者: 北极星光    时间: 2015-10-18 19:02
谢谢分享,下载学习
作者: titan200010    时间: 2015-10-25 00:10
不错,严重支持下
作者: ゞ刃ャ雪王    时间: 2015-10-25 17:24
(9.12更新)
作者: richwei    时间: 2015-10-26 11:17
学习中,什么都是好的!
作者: 胜过彩虹的美    时间: 2015-10-27 15:19
这。。。。。。。
作者: polang001    时间: 2015-10-27 17:18
很好的帖子,启发很大,顶
作者: leikaihua    时间: 2015-10-27 18:24
交流一下  看看 shui的快
作者: 豪商    时间: 2015-11-1 19:55
顶起来,给力!
作者: 豪商    时间: 2015-11-1 19:56
感谢分享
作者: Z隐    时间: 2015-11-4 21:15
感谢分享

作者: polang001    时间: 2015-11-6 15:55
又更新了吗???
作者: 我爱爱爱    时间: 2015-11-7 19:11
牛逼的大神啊,好好看看先·~!
作者: v20200213    时间: 2015-11-8 00:16
我就看看.......
作者: niotis    时间: 2015-11-11 09:09
新版源码回复可见
作者: waweiggfnh    时间: 2015-11-11 11:58
很不错的源码,值得学习,谢谢楼主分享
作者: aiwoma123    时间: 2015-11-11 15:22
{:soso_e100:}
作者: 俏娘子    时间: 2015-11-15 04:15
感谢发布原创作品,精易因你更精彩!
作者: lxqwest001    时间: 2015-11-16 22:10
有点看不懂了




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4