导航:首页 > 源码编译 > 外部排序归并算法

外部排序归并算法

发布时间:2023-12-31 21:07:30

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组排好序的整数,求算法复杂度

阅读全文

与外部排序归并算法相关的资料

热点内容
解压中的删掉是什么意思 浏览:761
王牌竞速什么时候能停止维修服务器 浏览:482
pdf阅读器官方 浏览:82
程序员那么爱心 浏览:300
字符a经过md5加密 浏览:414
绿色的小蝴蝶是个什么app 浏览:12
python编程输入数字输出年月日英文 浏览:623
程序员枪手 浏览:743
gm28服务器怎么设置 浏览:539
饿了么网站源码 浏览:329
天选程序员真的有用吗 浏览:914
微信登录服务器什么意思 浏览:350
溯源码粘碎图 浏览:134
qq绑定邮箱pop服务器地址 浏览:724
卡罗拉空调压缩机价格 浏览:892
华润it程序员 浏览:554
51单片机c语言秒表 浏览:273
php一周前的时间 浏览:852
windows文件夹输入列表 浏览:919
php做网页聊天系统 浏览:890