编程珠玑(第二版) 第二章 问题A

问题A:

给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数(在文件中至少缺失一个这样的数--为什么?)。在有足够内存的情况下,如何解决该问题?如果有几个外部的“临时”文件可用,但是仅有几百字节的内存,又该如何解决?

分析:

问题与第一章“开篇”类似,只是数目由1千万变成了40亿,并且没有说明这40亿个数字是否重复。

1.文件中至少缺失一个这样的数:因为4,000,000,000 < 4,294,967,295(2^32-1)。

2.阅读过第一章可知:遍历文件并存储于位图,然后循环测试,得到第一个测试值为0的索引即可。位图表示:int bitmap[2^32/2^4],即需要625MB内存。由于目的不是排序,在此跟数字重复与否无关。

3.使用二分搜索技术。参考:编程珠玑第二章问题A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值