编程珠玑-给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数
思路
二分法。
答案初始值为0,当前位i为最高位,比如32;
对当前文件进行处理:根据当前第i位为0、为1,将文件一分为二;
比较这两组数哪个较多,如果为0较多则答案第i为置0(不需要操作),为1较多则答案第i位置1;
接着继续转向较多的那组数;
重复以上步骤2-3。重复以上步骤2-3。
正确性
参考
32位整数的范围是0到232(大于40亿),则对于一个随机40亿个整数来说,有232-40...
原创
2019-02-27 17:17:51 ·
788 阅读 ·
2 评论