设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 2523|回复: 1
收起左侧

易语言 BitMap算法实现整数型数组非排序去重复 (15秒处理百万数据,至少512MB可用内存)

[复制链接]
发表于 2020-3-18 18:08:49 | 显示全部楼层 |阅读模式
本帖最后由 CNWTEPRG 于 2020-3-18 18:10 编辑

1.png

  1. .版本 2
  2. .支持库 spec

  3. .程序集 程序集1

  4. .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码


  5. _临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
  6. 返回 (0)  ' 可以根据您的需要返回任意数值

  7. .子程序 _临时子程序
  8. .局部变量 数组, 整数型, , "1000000"
  9. .局部变量 返回值, 整数型, , "0"
  10. .局部变量 计数, 整数型
  11. .局部变量 时间, 整数型

  12. 置随机数种子 ()
  13. 输出调试文本 (“正在初始化数组...”)
  14. .计次循环首 (取数组成员数 (数组), 计数)
  15.     数组 [计数] = 取随机数 (, ) × 取随机数 (, ) × 取随机数 (, )
  16. .计次循环尾 ()
  17. 时间 = 取启动时间 ()
  18. 输出调试文本 (“正在去重...”)
  19. 整数型数组_去重_BITMAP (数组, 返回值)
  20. 调试输出 (取启动时间 () - 时间, 取数组成员数 (数组), 取数组成员数 (返回值))


  21. .子程序 整数型数组_去重_BITMAP, , 公开, 无论数组大小,本算法需要512MB固定大小的内存空间
  22. .参数 数组, 整数型, 数组
  23. .参数 返回值, 整数型, 参考 数组
  24. .局部变量 值, 整数型
  25. .局部变量 字节地址, 整数型
  26. .局部变量 字节值, 字节型
  27. .局部变量 位地址, 字节型
  28. .局部变量 成员数, 整数型
  29. .局部变量 计数, 整数型
  30. .局部变量 位映射表, 字节集

  31. 清除数组 (返回值)
  32. 位映射表 = 取空白字节集 (536870912)
  33. 成员数 = 取数组成员数 (数组)
  34. .计次循环首 (成员数, 计数)
  35.     值 = 数组 [计数]
  36.     字节地址 = 无符号右移3位并加1 (值)
  37.     位地址 = 左移 (1, 位与 (值, 7))
  38.     字节值 = 位映射表 [字节地址]
  39.     .如果真 (位与 (字节值, 位地址) = 0)
  40.         位映射表 [字节地址] = 位或 (字节值, 位地址)
  41.         加入成员 (返回值, 值)
  42.     .如果真结束

  43. .计次循环尾 ()

  44. .子程序 无符号右移3位并加1, 整数型
  45. .参数 欲移动的整数, 整数型, , 易语言自带的右移为有符号右移,与无符号右移计算结果不同

  46. 置入代码 ({ 139, 69, 8, 193, 232, 3, 64, 201, 194, 4, 0 })
  47. ' mov eax,[ebp+8]
  48. ' shr eax,3
  49. ' inc eax
  50. ' leave
  51. ' retn 4

  52. 返回 (0)
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-3-29 15:35 , Processed in 0.491028 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表