当前位置:首页 » 操作系统 » 外部排序算法

外部排序算法

发布时间: 2025-03-09 05:09:59

1. 外部排序算法基本思想是什么

外部排序的基本思路

假设有一个72KB的文件,其中存储了18K个整数,磁盘中物理块的大小为4KB,将文件分成18组,每组刚好4KB。

首先通过18次内部排序,把18组数据排好序,得到初始的18个归并段R1~R18,每个归并段有1024个整数。

然后对这18个归并段使用4路平衡归并排序:

第1次归并:产生5个归并段

R11 R12 R13 R14 R15

其中

R11是由{R1,R2,R3,R4}中的数据合并而来

R12是由{R5,R6,R7,R8}中的数据合并而来

R13是由{R9,R10,R11,R12}中的数据合并而来

R14是由{R13,R14,R15,R16}中的数据合并而来

R15是由{R17,R18}中的数据合并而来

把这5个归并段的数据写入5个文件:

foo_1.dat foo_2.dat foo_3.dat foo_4.dat foo_5.dat

第2次归并:从第1次归并产生的5个文件中读取数据,合并,产生2个归并段

R21 R22

其中R21是由{R11,R12,R13,R14}中的数据合并而来

其中R22是由{R15}中的数据合并而来

把这2个归并段写入2个文件

bar_1.dat bar_2.dat

第3次归并:从第2次归并产生的2个文件中读取数据,合并,产生1个归并段

R31

R31是由{R21,R22}中的数据合并而来

把这个文件写入1个文件

foo_1.dat

此即为最终排序好的文件。

二 使用败者树加快合并排序

外部排序最耗时间的操作时磁盘读写,对于有m个初始归并段,k路平衡的归并排序,磁盘读写次数为

|logkm|,可见增大k的值可以减少磁盘读写的次数,但增大k的值也会带来负面效应,即进行k路合并

的时候会增加算法复杂度,来看一个例子。

把n个整数分成k组,每组整数都已排序好,现在要把k组数据合并成1组排好序的整数,求算法复杂度

热点内容
美图手机如何解密码开锁 发布:2025-03-09 21:14:35 浏览:14
行车记录仪安卓版如何使用 发布:2025-03-09 20:58:03 浏览:311
sql登陆不了 发布:2025-03-09 20:45:16 浏览:924
如何用本机做服务器 发布:2025-03-09 20:43:54 浏览:44
新时达服务器如何查故障 发布:2025-03-09 20:31:14 浏览:949
sql2005server 发布:2025-03-09 20:31:08 浏览:113
过滤sql注入 发布:2025-03-09 20:23:25 浏览:992
华为荣耀6大容量存储 发布:2025-03-09 20:22:34 浏览:456
php流图片 发布:2025-03-09 20:22:27 浏览:44
农行密码多少位 发布:2025-03-09 20:21:55 浏览:147