最近阅读编程珠玑,把书上的内容全部代码实现一遍来练练手
1.
文件中存有不重复的数字,如何在内存不足的情况下将其排序,由小到大输出?
这里简化一下,假装文件里面只有不大于10的几个数字
实现的代码如下:
#define SET_BIT(bit_,num_) (num_=((1<<bit_)|num_))
#define GET_BIT(bit_,num_) (num_&(1<<bit_))
unsigned short int storage16bit = 0;
//读入文件中的数字
void sortRead()
{
char num[2] = { 0 };
std::ifstream in("in.txt");
if (!in.is_open())
{
std::cout << "open file in.text filed!";
exit(-1);
}
while (!in.eof())
{
in.getline(num, 2);
SET_BIT(atoi(num), storage16bit);
}
in.close();
}
//写排序好的数字
void sortWrite()
{
std::ofstream out("out.txt");
if (!out.is_open())
{
std::cout << "open file out.text filed!";
exit(-1);
}
for (int i = 0; i < 10; i++)
{
if (GET_BIT(i, storage16bit))
{
out << i << std::endl;
}
}
out.close();
}