在一个文件中有
分析:假设每个整数用一个bit表示,
#define MAX_INDEX 1.25*1024*1024*1024
int findmidint()
{
char a[MAX_INDEX];
long value = 0;
long total = 0;
long index = 0;
for(int i = 0; i <
MAX_INDEX; i++)
{
a[i] = 0;
}
while ((value =
GetANumFromFile()) != EOF)
{
if (!(a[value >> 3] & (1 << (value & 7)))
{
total++;
......
}
}
for (int i = 0; i <
MAX_INDEX * 8; i++)
{
if (......)
{
index++;
if (index == total/2)
return i;
}
}
return 0;
}
注意:用一个整数作为数组的下标并对这个元素赋值为0或者1来记录这个整数是否存在是一个重要的编程技巧。用一个Byte的每个bit来记录一个信息也是一个重要的编程技巧。希望读者朋友们多多体会和应用。
Copyright 2011-2020 © MallocFree. All rights reserved.