当前位置:   article > 正文

大数据量算法_大数据量计算

大数据量计算

给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中

位图思想解法:

  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "memory.h"
  4. #define MAX_NUM (4294967295)
  5. int main(void)
  6. {
  7. unsigned int inputNum[4]={1,2,3,MAX_NUM};
  8. unsigned int testNum1 = MAX_NUM;
  9. int i = 0;
  10. unsigned char *mapMem = (unsigned char *)malloc((MAX_NUM)*sizeof(unsigned char)/8 +1);
  11. memset(mapMem,'\0',((MAX_NUM)*sizeof(unsigned char)/8 +1));
  12. for (i = 0; i<4; i++)
  13. {
  14. mapMem[inputNum[i]/8] |= (1 << (inputNum[i]%8));
  15. }
  16. //test
  17. if (mapMem[testNum1/8] & (1 << (testNum1%8)))
  18. {
  19. printf("%d is in the array\n",testNum1);
  20. }
  21. else
  22. {
  23. printf("%d isn't in the array\n",testNum1);
  24. }
  25. free(mapMem);
  26. }



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/401790
推荐阅读
相关标签
  

闽ICP备14008679号