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

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

时间:2023-12-13 13:00:10浏览次数:35  
标签:文件 字节 int 个数 unsigned 40

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

问题分析:40亿 不重复 ,没有排序。40亿个unsigned int的整数,放到内存中的话,大约是160G。32*40亿=1280亿=1280000000000bit=160 000 000 000~160g

8bit(比特位)= 1Byte(字节) 1024Byte(字节)= 1K(千字节) 1024K(千字节)= 1M(兆字节) 1024M = 1G 1024G = 1T

 

方案1:申请512M的内存(2^32/8=512MB),一个bit位代表一个unsigned int值。读入40亿个数,设置相应的bit位,读入要查询的数,查看相应bit位是否为1,为1表示存在,为0表示不存在。

方案2:因为2^32为40亿多,所以给定一个数可能在,也可能不在其中;这里我们把40亿个数中的每一个用32位的二进制来表示假设这40亿个数开始放在一个文件中。

然后将这40亿个数分成两类: 1. 最高位为0 2. 最高位为1

并将这两类分别写入到两个文件中,其中一个文件中数的个数<=20亿,而另一个>=20亿(这相当于折半了);与要查找的数的最高位比较并接着进入相应的文件再查找

再然后把这个文件为又分成两类: 1.次最高位为0 2.次最高位为1

并将这两类分别写入到两个文件中,其中一个文件中数的个数<=10亿,而另一个>=10亿(这相当于折半了); 与要查找的数的次最高位比较并接着进入相应的文件再查找。 ....... 以此类推,就可以找到了,而且时间复杂度为O(logn)。

标签:文件,字节,int,个数,unsigned,40
From: https://www.cnblogs.com/guoyu1/p/17898824.html

相关文章

  • Executors.newFixedThreadPool(int nThreads)存在的缺陷
    一般来讲是不推荐直接使用JAVA提供的Executors类来初始化线程池,如果有需要可以自行通过ThreadPoolExecutor来封装进行初始化。可以用newFixedThreadPool(intnThreads)来简单分析下。看一下源代码不难发现,问题的原因在于此方法返回的ThreadPoolExecutor使用的阻塞队列是Linked......
  • 2023.12 ~ After the ice turns into water / the sea I hang upside down will be yo
    COCI2023.11LOJ3999考虑把填数过程倒过来做,那么就变成了覆盖。设\(f(i,j,0/1)\)表示目前填进去\(i\)个数,且最后一个填的数是\(j\),并且\(j\)的位置在最左侧/最右侧的方案数。以\(f(i,j,0)\)为例,转移有:\(f(i,j,0)\tof(i+1,k,0)\),要求\(k\lej-1\)且\(j-1\equivk......
  • 远程控制 安全 SCADA wincc intouch 组态王
    1、scada系统,远程控制满足的条件:  防止机器出现紧急情况,比如伤人,材料返工,机器乱动等问题。网络要物理隔离,如果向日葵,todesk等互联网远程,需要有人在电脑和现场同时有人配合(配合也要注意安全),出现紧急情况方便处理。互联网远程,延时大,黑客攻击,人恶意破坏。局域网远程vnc,不加......
  • Fluter 网络请求图片403 防盗链处理解决办法
    很多网站都会做防盗链处理我们请求使用flutter请求是403浏览器请求是正常的原因在判定了用户的请求头user-agent处理办法去掉原有的请求头使用浏览器的请求头修改源码assert(key==this);finalUriresolved=Uri.base.resolve(key.url);......
  • Python报错:performance hint: av/logging.pyx:232:5: the GIL to be acquired
     参考:https://stackoverflow.com/questions/77410272/problems-installing-python-av-in-windows-11https://github.com/PyAV-Org/PyAV/issues/1177  ================================  报错信息:C:\Windows.old\Users\chris>pipinstallavDefaultingtouserinstallatio......
  • docker启动容器报错:Error response from daemon: driver failed programming external
    安装的docker启动报错如下:Errorresponsefromdaemon:driverfailedprogrammingexternalconnectivityonendpointnacos(2b0f4edff8f640559af9626936d1b38d965302ef525af483716e8e8c9121583e):(iptablesfailed:iptables--wait-tnat-ADOCKER-ptcp-d0/0--dp......
  • 英伟达显卡 RTX A4000 环境安装
    ​1.安装显卡驱动驱动下载地址: https://www.nvidia.cn/Download/Find.aspx?lang=cn此处下载的显卡驱动为(有的显卡型号可以选择cuda版本):NVIDIA-Linux-x86_64-470.182.03.run安装后,xshell中输入nvidia-smi显示:也就是说安装的cuda版本不能高于11.4 2.下载并安装minicon......
  • Nginx——记录post请求回执405的一种解决方式
    前言:nginx做反向代理,一直报405,由于之前配置过,一直是没问题的,这次一直报405,搞了一下午,终于找到原因了是因为开启了多个ngixn导致的。解决办法:cmd杀掉nginx后台进程命令杀掉nginx后台nginx常用命令taskkill/f/t/imnginx.exenginx 常用命令startnginx#启动Ng......
  • Python爬取网站内容时,出现返回200和403状态码的原因解析
    在使用Python进行网页爬取时,我们有时会遇到返回200状态码表示成功,而有时会遇到返回403状态码表示访问被拒绝的情况。本文将解析造成这种情况的可能原因,并提供一些解决方法,以确保爬取网站内容的顺利进行。在使用Python进行网页爬取时,经常会遇到一种情况:有时成功返回200状态码,表示请......
  • url传参是接送字符串时,报400错误
    URL传递参数,参数是JSON字符串,将字符串拼在url?后,该url不识别,为什么会报400?当URL传递参数,参数是JSON字符串时,如果将字符串直接拼在URL后面,可能会导致URL无法正确识别,从而报400错误。这是因为URL有特定的字符限制和编码要求,而JSON字符串中可能包含URL不安全的字符,如特殊字符、空格、......