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

外部排序算法

发布时间: 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-05-01 11:47:14 浏览:662
sql创建表外键 发布:2025-05-01 11:39:59 浏览:168
vivo短信文件夹 发布:2025-05-01 11:29:31 浏览:491
按键精灵安卓安装包怎么导出 发布:2025-05-01 11:25:35 浏览:196
2级缓存英文 发布:2025-05-01 11:20:37 浏览:74
c语言国产编译器 发布:2025-05-01 11:15:31 浏览:566
java编译路径设置 发布:2025-05-01 11:11:39 浏览:468
phporaclelinux 发布:2025-05-01 11:11:34 浏览:174
android取字符串 发布:2025-05-01 11:10:52 浏览:74
安卓手机里面的收藏在哪里 发布:2025-05-01 11:04:56 浏览:948