2015年福建莆田中考志愿填報(bào)時(shí)間:6月16-19日
一個(gè)文件中有40億個(gè)整數(shù),每個(gè)整數(shù)為四個(gè)字節(jié),內(nèi)存為1GB,寫出一個(gè)算法:求出這個(gè)文件里的整數(shù)里不包含的一個(gè)整數(shù)
答:方法一: 4個(gè)字節(jié)表示的整數(shù),總共只有2^32約等于4G個(gè)可能。
為了簡單起見,可以假設(shè)都是無符號整數(shù)。
分配500MB內(nèi)存,每一bit代表一個(gè)整數(shù),剛好可以表示完4個(gè)字節(jié)的整數(shù),初始值為0。基本思想每讀入一個(gè)數(shù),就把它對應(yīng)的bit位置為1,處理完40G個(gè)數(shù)后,對500M的內(nèi)存遍歷,找出一個(gè)bit為0的位,輸出對應(yīng)的整數(shù)就是未出現(xiàn)的。算法流程:
1)分配500MB內(nèi)存buf,初始化為0
2)unsigned int x=0×1;
for each int j in file
buf=buf ¦x < <j;
end
(3) for(unsigned int i=0; i <= 0xffffffff; i++)
if (!(buf & x < <i))
{
output(i);
break;
}
以上只是針對無符號的,有符號的整數(shù)可以依此類推。

【福建莆田中考志愿填報(bào)時(shí)間:6月16-19日】相關(guān)文章:
2015年福建泉州中考志愿填報(bào)時(shí)間:6月9日-12日04-05
2016年福建福州中考志愿填報(bào)時(shí)間6月15-17日04-05
2016福建高考志愿填報(bào)時(shí)間安排02-13
2015長春中考志愿填報(bào)時(shí)間及填報(bào)方法02-08
2020烏魯木齊中考志愿填報(bào)時(shí)間03-28
2016江津中考志愿填報(bào)時(shí)間6月14日01-26
2015北京中考志愿填報(bào)時(shí)間:5月22日03-23
2015廣州中考志愿填報(bào)時(shí)間:6月1日-5日05-03
2015泉州中考志愿填報(bào)時(shí)間:6月9日-12日04-08
- 相關(guān)推薦