用C++的bitset实现非常的方便:
/*************
位图排序算法实现
*************/
#include <iostream>
#include <bitset>
#include <fstream>
using namespace std;
int main()
{
// 查看bitset的实现可知bitset是利用对unsigned long进行位运算间接实现对位的存储的
// 如是保存一个32位的bitset实质是保存了4个unsigned long长整数
bitset<1000000> b;
b.reset();
ifstream in("before_sort.txt");
ofstream out("after_sort.txt");
int i;
while (!in.eof()) {
in>>i;
b.set(i);
}
for (i=0;i<1000000;++i) {
if (b[i]==1) {
out<<i<<endl;
}
}
return 0;
}
http://msdn.microsoft.com/zh-cn/library/a727bt1b(v=vs.90)
bitset的操作例子见: