开篇:位图技术进行数据排序

         问题描述:一个磁盘文件中存在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

 这样就完成了数据的排序输出。

posted @ 2012-12-13 19:37  helloyu  阅读(103)  评论(0)    收藏  举报