08-8.6.1 外部排序

👋 Hi, I’m @Beast Cheng
👀 I’m interested in photography, hiking, landscape…
🌱 I’m currently learning python, javascript, kotlin…
📫 How to reach me --> 458290771@qq.com


喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑‍💻
感兴趣的小伙伴可以点一下订阅、收藏、关注!🚀
谢谢大家!🙏

外存、内存之间的数据交换

操作系统以“块”为单位对磁盘存储空间进行管理

原理

数据元素太多,无法一次全部读入内存进行排序。
使用归并排序,最少只需要在内存中分配3块大小的缓冲区即可对任意一个大文件进行排序

时间开销分析

外部排序->生成初始归并段->第一趟归并->第二趟归并->……
![[Pasted image 20240711171706.png]]

如何优化?

多路归并:将四个有序归并段归并为一个

重要结论:采用多路归并可以减少归并次数,从而减少磁盘I/O(读写)次数

对于 r 个初始归并段,做 k 路归并,则归并树可用 k 叉树表示
若树高为 h,则归并次数 = h − 1 = l o g k r =h-1=log_kr =h1=logkr

什么是多路平衡归并?

k路平衡归并

  1. 最多只能有 k 个段归并为一个
  2. 每一趟归并中,若有 m 个归并段参与归并,则经过这一趟处理得到 m / k m/k m/k 个新的归并段
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Beast Cheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值