Hash算法超级列表框去重复

易语言 2020-09-24 22:49:50

Hash算法超级列表框去重复

(V3.51)此算法Quick and easy(快速、简单),故命名为QEHash。

原表项.置字节集 (参_超级列表框.表项) ' 用快速字节集对象的话 数据量大的时候分割快一点 但是超过2G要置可用内存
原表项字节集数组 = 原表项.分割字节集 ({ 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 }, ) ' 创建个超级列表框 加点表项 调试输出一下就知道字节集构成了
哈希.重置 (取数组成员数 (原表项字节集数组) + 1) ' 加1是自我安慰 可以无视...
.计次循环首 (取数组成员数 (原表项字节集数组) - 1, 计次) ' 数组第一个是空字节集
内部字节集 = 原表项字节集数组 [计次 + 1]
内部字节集数组 = 分割字节集 (内部字节集, { 0, 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 }, ) ' 数组最后一个多了{0,0} 但是并没有影响什么
.如果真 (取数组成员数 (内部字节集数组) > 参考列) ' 默认将没有参考列或者为空的表项也当作重复项删除了 可以改
内内部字节集 = 内部字节集数组 [参考列 + 1]
.如果真 (内内部字节集 ≠ { })
.如果真 (哈希.查找 (内内部字节集, ) = 假)
哈希.添加 (内内部字节集, { 0 })
.如果 (重新编号)
计数 = 计数 + 1
新表项.添加 ({ 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 } + 到字节集 (到文本 (计数)))
.计次循环首 (取数组成员数 (内部字节集数组) - 1, 计次2)
新表项.添加 ({ 0, 0, 1, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 } + 内部字节集数组 [计次2 + 1])
.计次循环尾 ()
.否则
新表项.添加 ({ 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 } + 内部字节集)
.如果结束

到循环尾 ()
.如果真结束

.如果真结束

.如果真结束
重复数 = 重复数 + 1
.计次循环尾 ()