用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的操作例子见: