参考:http://blog.csdn.net/v_JULY_v/article/details/6451990

产生文件10^7个数据文件data.txt:

http://blog.csdn.net/ldanduo/article/details/8050484

//copyright@ yansha July、2010.05.30。
//位图方案解决10^7个数据量的文件的排序问题
//如果有重复的数据,那么只能显示其中一个 其他的将被忽略
//date:2012.10.8#include<iostream>
#include<bitset>
#include<assert.h>
#include<time.h>
#include<fstream>
using namespace std;const int max_each_scan = 5000000;int main(int argc, char *argv[])
{clock_t begin = clock();bitset<max_each_scan> bit_map;bit_map.reset();// open the file with the unsorted dataFILE *fp_unsort_file = fopen("data.txt", "r");assert(fp_unsort_file);int num;// the first time scan to sort the data between 0 - 4999999while (fscanf(fp_unsort_file, "%d ", &num) != EOF){if (num < max_each_scan)bit_map.set(num, 1);}FILE *fp_sort_file = fopen("sort.txt", "w");assert(fp_sort_file);int i;//write the sorted data into filefor (i = 0; i < max_each_scan; i++){if (bit_map[i] == 1)fprintf(fp_sort_file, "%d ", i);}// the second time scan the data between 5000000 - 9999999int result = fseek(fp_unsort_file, 0, SEEK_SET);     if (result)  cout << "fseek failed!" << endl;  else  {  bit_map.reset();  while (fscanf(fp_unsort_file, "%d ", &num) != EOF)  {  if (num >= max_each_scan && num < 10000000)  {  num -= max_each_scan;  bit_map.set(num, 1);  }  }  for (i = 0; i < max_each_scan; i++)  {  if (bit_map[i] == 1)  fprintf(fp_sort_file, "%d ", i + max_each_scan);  }  }  clock_t end = clock();  cout<<"用位图的方法,耗时:"<<endl; cout << (end - begin) / CLK_TCK << "s" << endl;  fclose(fp_sort_file);  fclose(fp_unsort_file);  return 0;
}

bitmap位图方案解决海量数据文件排序的问题相关推荐

  1. 服务器内文件大小排序,centos 如何查找大文件,文件排序方案大全

    本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规.大家都是程序员,不要闹得不开心. centos服务器,使用一段时间后,有的时候会报警:磁盘空间不足.解决方法就是:找到系统盘里面的大文件,然后删 ...

  2. python 爬虫 快看漫画整站爬取(解决动态加载漫画图片地址、漫画图片合成长图、图片文件排序等问题)

    运行结果: 这个是爬取的目标 爬取之后建立文件夹,合成长图之后删除文件夹 这里仅仅做几组演示, 由于合成的图片有单列长度限制,所有拆分成两列 开始: 首先打开网站,找到某个漫画,发现点鼠标右键不可以, ...

  3. linux中获取redis的map,深入Redis之 bitmap位图和HyperLogLog(五)

    bitmap位图 我们知道一个字符占1个字节,也就是8个位 例如 set name big big字符串中的3个字符的ASCII码为98 105 113 所以big转为二进制就是: 01100010| ...

  4. bug:生产问题,Golang解决csv文件用excel打开中文乱码问题及常见编码和BOM头关系

    bug:Golang解决csv文件用excel打开中文乱码问题 1 场景及分析 场景:今天在生成csv文件之后,测试发现用office和wps打开乱码 分析:经过测试之后发现使用记事本打开不乱码,同时 ...

  5. python文件信息排序_python文件排序的方法总结

    在python环境中提供两种排序方案:用库函数sorted()对字符串排序,它的对象是字符:用函数sort()对数字排序,它的对象是数字,如果读取文件的话,需要进行处理(把文件后缀名'屏蔽'). (1 ...

  6. mysql 高效备份_Mysql高性能备份方案解决数据不间断访问(LVM快照方式备份)

    Mysql高性能备份方案解决数据不间断访问(LVM快照方式备份) mysql LVM快照备份特点: 1.在大多数情况下,这种方式几乎算得上是热备.它无需关闭服务,只需要设置只读或者类似这样的限制. 2 ...

  7. 微信公众号自动回复服务器数据,[终极方案]解决微信公众号服务器配置启用后无法自动回...

    在配置服务器配置时Token验证通过后,遇到给公众号发信息,提示:提示该公众号提供的服务出现故障,请稍后再试 的问题,一直实现不了自动回复的功能.百度了大量的资料,参考了开发文档,尝试了n种办法,检查 ...

  8. 《spark技术应用》课程期末考试大作业报告,使用eclipse完成求top值、文件排序、二次排序三个程序的个性化开发。

    ​​​​目录 一.选题的目的及要求... 4 二.设计思路... 4 三.主要内容及关键技术.. 5 四.制作步骤... 5 1.准备工作... 5 1.1在VMware中安装一台Ubuntu64位系 ...

  9. 处理大文件排序的方式--外部排序

    引言   一般来说,对一个数组的排序,我们常用冒泡排序.快速排序.堆排序等算法进行排序.这样的数组能够一次性加载到内存中,使用上述的排序算法就能轻而易举进行排序,所以上述的排序算法可以称之为堆内排序. ...

  10. PHP是4的倍数但不是6的倍数,解决PHP文件字符串长度为4096倍数时的bug

    今天在Drupal社区看到这样一个Bug. 当Windows平台在PHP = 5.3.10时,如果一个PHP的文件的字符串长度正好是4096的倍数,运行或者调用这个PHP文件,将会直接发生PHP崩溃. ...

最新文章

  1. 【Qt】通过QtCreator源码学习Qt(十):多国语言支持
  2. 前端开发VScode常用插件
  3. javaSocket与C通信
  4. 域名服务器(DNS)工作原理
  5. html两个div间有白线,html-在特定浏览器宽度下,白线出现在渐变填充div的末尾
  6. dj电商-应用整合在一起,不完整版
  7. 数据挖掘十大经典算法(转载)
  8. visual studio community 2019 编译调试linux环境下程序
  9. Github上的优秀安卓项目
  10. 假短信截图在线生成器_10个超好玩的自动生成器
  11. 用vs2019制作简易计算器
  12. 响应式2022英文企业官网源码,感觉挺有创意的
  13. 【Matlab应用】:相控阵天线方向图合成及波束扫描算法实现
  14. matlab 画地图 经纬度,MATLAB绘制地图.docx
  15. asp.net开发wap程序必备:识别来访手机品牌型号(转)
  16. mooc-人工智能与信息社会-人工智能发展简史
  17. 思科Cisco交换机的基本模式和命令基本使用和技巧大全
  18. CANoe软件使用(一)——软件界面介绍
  19. Kali Linux安装2019.2.28
  20. 英语它在计算机旁边怎么读,计算机的英语怎么读?

热门文章

  1. 输出毫秒_毫秒级网络监控(网络示波器)
  2. dedecms联动筛选_织梦dedecms图片联动筛选教程
  3. Math详解大全,数学类
  4. 08cms php5.6,大型房产门户08cms单城市商业版V8.4(带升级补丁),带手机独家放送,去除后门优化响应...
  5. 找不到匹配的key exchange算法_AC自动机 | 多字符串匹配你会吗?
  6. mysql查询一个月未登录_mysql函数实例-统计1周内未登陆的用户
  7. 页面常见的布局方式(图解)
  8. Android Studio 3.3发布:官方支持导航编辑器
  9. BZOJ3108 [cqoi2013]图的逆变换
  10. Uber花了21亿元入驻上海自贸区 不叫优步叫雾博