开篇:位图技术进行数据排序
问题描述:一个磁盘文件中存在1000万个数据,每个数据都是7位的整数,,每条数据值出现一次,如何给该文件的数据进行排序输出。
简单的解决方案:利用位图结构进行排序
因为每个7位十进制数都表示一个小于1000万的整数,我们使用一个具有1000万个位的字符串来表示该文件,其中只有当整数i在文件中存在时,第i位为1。 这种表示利用了改问题的三个排序问题中不常见的属性:输入数据限制在相对的较小的范围内;数据没有重复;而且对于每个数据而言,除了单一整数外,没有任何其它关联数据。
分为三个阶段来编写程序
/*第一阶段 初始化 使得每位都为0*/
for i=[0,n)
bit[i]=0;
/*第二阶段 通过读入的文本数据 使得每个对应的位置为1*/
for each i in the input file
bit[i]=1
/*第三阶段 检验每一位 如果该位为1 则输出该位到输出文件中 相当于排序 */
for i=[0,n)
if bit[i]==1
write i on the outputfile
这样就完成了数据的排序输出。

浙公网安备 33010602011771号