|

分享源码
界面截图: |
|
是否带模块: |
纯源码 |
备注说明: |
- |
本帖最后由 梦幻1096 于 2024-11-10 14:00 编辑
变量名 | 类 型 | 静态 | 数组 | 备 注 | 链表地址 | 整数型 | | | 链表长度 | 整数型 | | | 键数量 | 整数型 | | | 预设内存大小 | 整数型 | | | 预设内存指针 | 整数型 | | | 申请内存记录 | 整数型 | | 0 | 扩容触发点 | 整数型 | | | 表位置 | 整数型 | | | 链表节点 | 整数型 | | | 节点地址 | 整数型 | | | 文本地址 | 整数型 | | | 文本长度 | 整数型 | | | 哈希值 | 整数型 | | | 是否重复 | 逻辑型 | | | a | 整数型 | | | b | 整数型 | | | c | 整数型 | | | d | 整数型 | | | e | 整数型 | | | f | 整数型 | | | i | 整数型 | | | j | 整数型 | | | 如果真 (取数组成员数 (文本数组 ) ≤ 1 ) 返回 (取数组成员数 (文本数组 ))
链表长度 = 16 链表地址 = 申请内存 (左移 (链表长度, 2 ), 真) 如果真 (取数组成员数 (文本数组 ) > 10000 ) 预设内存大小 = 取数组成员数 (文本数组 ) × 4 加入成员 (申请内存记录, 申请内存 (预设内存大小, 真))  预设内存指针 = 申请内存记录 [1 ] 扩容触发点 = 链表长度 × 0.75 计次循环首 (取数组成员数 (文本数组 ), i )  文本地址 = 取变量数据地址 (文本数组 [i ]) 如果真 (文本地址 = 0 ) 到循环尾 () 文本长度 = 取文本长度 (文本数组 [i])  c = 文本长度 \ 4  d = 文本长度 % 4  a = 十六进制 (“811c9dc5”) b = 十六进制 (“01000193”) e = 文本地址  如果真 (c ≠ 0 )  计次循环首 (c, j )   f = 指针到整数 (e )   a = 位异或 (a, f ) × b    e = e + 4   计次循环尾 () 如果真 (d ≠ 0 )  f = 左移 (指针到整数 (e ), (4 - d ) × 8 )  a = 位异或 (a, f ) × b 哈希值 = 取绝对值 (a)  表位置 = 哈希值 (链表长度 - 1 ) + 1  链表节点 = 链表地址 + 左移 (表位置, 2 ) 节点地址 = 指针到整数 (链表节点 )  判断循环首 (节点地址 ≠ 0 )  如果真 (哈希值 = 指针到整数 (节点地址 ))    如果真 (文本长度 = 指针到整数 (节点地址 + 8 ))     如果真 (文本数组 [i ] = 文本数组 [指针到整数 (节点地址 + 12 )])      是否重复 = 真     跳出循环 ()              链表节点 = 节点地址 + 4
  节点地址 = 指针到整数 (链表节点 )  判断循环尾 () 如果真 (是否重复 = 真)  是否重复 = 假  到循环尾 ()   如果 (预设内存指针 = 0 )  节点地址 = 申请内存 (16, 真)  加入成员 (申请内存记录, 节点地址 )       如果真 (预设内存大小 < 16 )   预设内存大小 = 取数组成员数 (文本数组 ) × 4   加入成员 (申请内存记录, 申请内存 (预设内存大小, 真))    预设内存指针 = 申请内存记录 [取数组成员数 (申请内存记录 )] 节点地址 = 预设内存指针  预设内存指针 = 预设内存指针 + 16   预设内存大小 = 预设内存大小 - 16   写到内存 (节点地址, 链表节点, ) 写到内存 (哈希值, 节点地址, ) 写到内存 (文本长度, 节点地址 + 8, )  键数量 = 键数量 + 1  如果真 (键数量 ≠ i )  交换变量 (文本数组 [键数量 ], 文本数组 [i ]) 写到内存 (键数量, 节点地址 + 12, )  如果真 (键数量 ≥ 扩容触发点 )  j = 左移 (链表长度, 1 )  f = 申请内存 (左移 (j, 2 ), 真)  变量循环首 (链表地址, 链表地址 + 左移 (链表长度 - 1, 2 ), 4, c )   e = 指针到整数 (c )   判断循环首 (e ≠ 0 )    哈希值 = 指针到整数 (e )    表位置 = 哈希值 (j - 1 ) + 1     a = f + 左移 (表位置, 2 )    b = 指针到整数 (a )    判断循环首 (b ≠ 0 )     a = b + 4      b = 指针到整数 (a )    判断循环尾 ()   写到内存 (e, a, )    c = e + 4     e = 指针到整数 (c )   写到内存 (0, c, )   判断循环尾 ()  变量循环尾 ()  释放内存 (链表地址 )  链表地址 = f   链表长度 = j   扩容触发点 = 链表长度 × 0.75   计次循环尾 () 计次循环首 (取数组成员数 (申请内存记录 ), i ) 释放内存 (申请内存记录 [i ]) 计次循环尾 () 释放内存 (链表地址 ) 重定义数组 (文本数组, 真, 键数量 )返回 (键数量 )
纯的不能再纯的源码,完全用的易语言代码的方式写的,效率挺高的,1000万只需5秒,不过说是这么说,但是单条文本太长的话就要慢一些,总之比一般的去重都要快很多吧,而且这个是独立为1个子程序的,不需要什么模块 DLL啥的,写了我几个小时,免费分享给你们吧!有啥问题bug啥的评论区留言!
将保存文本数据改成了保存文本指针,减少了内存开销!,修复了文本指针为0(也就是数组里面存在空文本的情况)又又又更新了一下,将保存文本指针改成保存文本下标,效率又可以提升不少!
|
评分
-
查看全部评分
|