外部排序 简介

来源:互联网 发布:ehr的数据规模和质量 编辑:程序博客网 时间:2024/06/05 16:51
        我们一般提到排序都是指内排序,比如快速排序,堆排序,归并排序等,所谓内排序就是可以在内存中完成的排序。RAM的访问速度大约是磁盘的25万倍,我们当然希望如果可以的话都是内排来完成。但对于大数据集来说,内存是远远不够的,这时候就涉及到外排序的知识了。
  外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装人内存的部分,分别把每一部分调入内存完成排序。然后,对已经排序的子文件进行归并排序。

  一般来说外排序分为两个步骤:预处理和合并排序。即首先根据内存的大小,将有n个记录的磁盘文件分批读入内存,采用有效的内存排序方法进行排序,将其预处理为若干个有序的子文件,这些有序子文件就是初始顺串,然后采用合并的方法将这些初始顺串逐趟合并成一个有序文件。

1、外排序的最佳实现方法
外部排序是指大文件的排序,待排序的记录存储在外存储器上,在排序过程中需要多次进行内存和外存之间的交换。对外存文件中的记录进行排序后的结果仍然被放到原有文件中。
外存磁盘文件能够随机存取任何位置上的信息,所以在数组上采用的各种内部排序方法都能够用于外部排序。但考虑到要尽量减少访问外存的次数,故归并排序方法最适合于外部排序。
2、外排序实现过程
外部排序过程可以分成两个相对独立的阶段:
(1)按可用内存的大小,把外存上含有n个记录的文件分成若干个长度为L的子文件,把这些子文件依次读入内存,并利用有效的内部排序方法对它们进行排序,再将排序后得到的有序子文件重新写入外存;
(2)对这些有序子文件逐趟归并,使其逐渐由小到大,直至得到整个有序文件为止。
其中,第一个阶段即为内部排序的操作,而第二个阶段涉及到了外部排序中的归并。在前面提到,内存归并排序在开始时是把数组中的每个元素均看作是长度为1的有序表,在归并过程中,有序表的长度从1开始,依次为2、4、8、……,直至有序表的长度len大于等于待排序的记录数n为止。而在对外存文件的归并排序中,初始有序表的长度通常是从一个确定的长度开始而不是从1开始,这是为了能够有效地减少归并的趟数和访问外存的次数,以提高外部排序的效率。所以,在第一阶段要按照初始有序表确定的长度在原文件上依次建立好每个有序表,在第二个阶段再调用对文件的归并排序算法完成排序。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 ios邮件退款失败怎么办 信用卡充了钱怎么办 ios退款被拒绝怎么办 话费缴错了怎么办 网上缴费交错了怎么办 别人给交错话费怎么办 联通流量不到账怎么办 卖家拒绝退款怎么办? 淘宝退款后红包怎么办 手机不能吃鸡怎么办? 在国外手机软件好多不支持怎么办 淘宝店拒绝退款怎么办 app没有退款资格怎么办 手机无法计步怎么办 抖音机型不支持怎么办 用nfc不支持卡片怎么办 移动怎么办省内流量包 手机交不了话费怎么办 淘宝快递不签收怎么办 快递买家不签收怎么办 淘宝退货未收货怎么办 淘宝退衣服运费怎么办 手机流量不到账怎么办 淘宝水果坏了怎么办 用微信充值话费充成空号了怎么办 苹果id被拉黑了怎么办 苹果app不退款怎么办 合同退款不退怎么办 微信充值q币被骗怎么办 小米手机存储空间不够怎么办 小米mix2s存储空间不够怎么办 进货一直没发票怎么办 魅蓝note5卡怎么办 电话费套餐花不了怎么办 墙和床头有间缝怎么办 床板里有虫子怎么办 松木床板味道大怎么办 寝室床板有虫子怎么办 胶合板当床板有气味怎么办 淘宝食品有问题怎么办 淘宝买东西碎了怎么办