海量数据的排序
2015-07-24 09:46
127 查看
前面提到的排序算法都是一些内排序算法,针对的是数据可以一次全部载入内存中的情况。但是面对海量数据,即数据不可能一次全部载入内存,需要用到外排序的方法。外排序采用分块的方法,首先将数据分块,对块内数据按选择一种高效的内排序策略进行排序。然后采用归并排序的思想对于所有的块进行排序,得到所有数据的一个有序序列。
例如,考虑一个1G文件,可用内存100M的排序方法。首先将文件分成10个100M,并依次载入内存中进行排序,最后结果存入硬盘。得到的是10个分别排序的文件。接着从每个文件载入9M的数据到输入缓存区,输出缓存区大小为10M。对输入缓存区的数据进行归并排序,输出缓存区写满之后写在硬盘上,缓存区清空继续写接下来的数据。对于输入缓存区,当一个块的9M数据全部使用完,载入该块接下来的9M数据,一直到所有的9个块的所有数据都已经被载入到内存中被处理过。最后我们得到的是一个1G的排序好的存在硬盘上的文件。└(^o^)┘
例如,考虑一个1G文件,可用内存100M的排序方法。首先将文件分成10个100M,并依次载入内存中进行排序,最后结果存入硬盘。得到的是10个分别排序的文件。接着从每个文件载入9M的数据到输入缓存区,输出缓存区大小为10M。对输入缓存区的数据进行归并排序,输出缓存区写满之后写在硬盘上,缓存区清空继续写接下来的数据。对于输入缓存区,当一个块的9M数据全部使用完,载入该块接下来的9M数据,一直到所有的9个块的所有数据都已经被载入到内存中被处理过。最后我们得到的是一个1G的排序好的存在硬盘上的文件。└(^o^)┘
相关文章推荐
- 数据结构线性表各种结构代码实现(C语言)
- CentOS更改yum源与更新系统
- 【java】五子棋小游戏
- 怎样能很好的将ppt转成pdf格式文件
- centos7下安装OMSA
- SQL游标的使用及实例
- 《移动APP测试实战》
- Google 发布 Android 性能优化典范
- SecureCRT 终端的中文显示乱码问题
- Android性能测试 一些适用于Android Studio的代码审查和性能测试工具
- Android ListView下拉/上拉刷新:设计原理与实现
- 不安装提取rpm中的全部文件
- 解析字典套数组套字典(有分业功能)
- python 例子1
- POI读取Excel时数据类型转换的问题
- 网站通用百度地图调用示例,只需填入座标和百度密钥即可。内容可自己更换。
- 关于weak
- hd2899
- Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分
- BZOJ 1001 狼抓兔子