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 个新的归并段

相关推荐

  1. LeetCode-day08-881. 救生艇

    2024-07-17 09:28:05       27 阅读
  2. 08-8.3.1 冒泡排序

    2024-07-17 09:28:05       15 阅读
  3. 08-8.5.2 基数排序

    2024-07-17 09:28:05       19 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 09:28:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 09:28:05       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 09:28:05       58 阅读
  4. Python语言-面向对象

    2024-07-17 09:28:05       69 阅读

热门阅读

  1. 面试题 27. 二叉树的镜像

    2024-07-17 09:28:05       30 阅读
  2. 从三个方向来谈谈开源项目有哪些机遇与挑战

    2024-07-17 09:28:05       24 阅读
  3. 告别自动激活:掌握如何在Conda中禁用Base环境

    2024-07-17 09:28:05       28 阅读
  4. 中国电子学会青少年编程等级考试真题下载

    2024-07-17 09:28:05       24 阅读
  5. Shell

    Shell

    2024-07-17 09:28:05      24 阅读
  6. 01.Verilog基础语法

    2024-07-17 09:28:05       21 阅读
  7. 音视频开发入门教程(1)如何安装FFmpeg?共210节

    2024-07-17 09:28:05       20 阅读
  8. HTTP缓存/强缓存/协商缓存

    2024-07-17 09:28:05       21 阅读
  9. 69、Flink 的 DataStream Connector 之 Kafka 连接器详解

    2024-07-17 09:28:05       20 阅读
  10. Google 优化(SEO):提升网站曝光率的关键策略

    2024-07-17 09:28:05       24 阅读