排序:外部排序算法分析

news2024/12/27 12:23:56

1.外存与内存之间的数据交换

1.外存(磁盘)

操作系统以“块”为单位对磁盘存储空间进行管理,如:每块大小1KB
各个磁盘块内存放着各种各样的数据。

2.内存

磁盘的读/写以“块”为单位数据读入内存后才能被修改修改完了还要写回磁盘。

2.外部排序的原理

在这里插入图片描述

外部排序:数据元素太多,无法一次全部读入内存进行排序。

使用“归并排序”的方法,最少只需在内存中分配3块大小的缓冲区即可对任意一个大文件进行排序。

1.步骤
  1. 生成r个初始归并段(对L个记录进行内部排序,组成一个有序的初始归并段)
  2. 进行S趟k路归并, s = [ l o g k r ] s= [log_kr] s=[logkr]
2.构造初始归并段

“归并排序”要求各个子序列有序,每次读入两个块的内容,进行内部排序后写回磁盘。

3.进行k路归并
  1. 把k个归并段的块读入k个输入缓冲区
  2. 用“归并排序”的方法从k个归并段中选出几个最小记录暂存到输出缓冲区中
  3. 当输出缓冲区满时,写出外存
3.时间开销分析

外部排序时间开销=读写外存的时间+内部排序所需时间+内部归并所需时间。

3.影响外部排序效率的因素

主要因素是磁盘IO的读写次数。

4.优化思路

k路平衡归并:

  • ①最多只能有k个段归并为一个;
  • ②每一趟归并中,若有m 个归并段参与归并,则经过这一趟处理得到[m/k]个新的归并段
1.增加归并路数k,进行多路平衡归并

在这里插入图片描述

  • 重要结论:采用多路归并可以减少归并趟数,从而减少磁盘IO(读写)次数。
  • 对r个初始归并段,做k路归并,则归并树可用k叉树表示
  • 若树高为h,则归并趟数= h − 1 = [ l o g k r ] h-1 = [log_kr] h1=[logkr],
  • k越大,r越小,归并趟数越少,读写磁由次数钺小.

推导:k叉树第h层最多有 k h − 1 k^{h-1} kh1个结点,则 r ≤ k h − 1 r ≤k^{h-1} rkh1 ( h − 1 ) 最小 = 「 [ l o g k r ] (h-1)最小= 「[log_kr] (h1)最小=[logkr]

2.多路归并带来的负面影响:
  • ①k路归并时,需要开辟k个输入缓冲区,内存开销增加。
  • ②每挑选一个关键字需要对比关键字(k-1)次,内部归并所需时间增加(可以使用败者树减少对比次数)
3.减少初始归并段数量

结论:若能增加初始归并段的长度,则可减少初始归并段数量r。
可用“置换-选择排序”进一步减少初始归并段数量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1051038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Purple-Pi-OH OHOS SDK编译手册

一、源码获取 1.1 源码获取 链接:百度网盘 请输入提取码 提取码:1234 $ mkdir purple-pi #将下载的ido_purple_pi_oh_ohos3.2_sdk.tgz拷贝到purple-pi $ cd purple-pi $ md5sum ido_purple_pi_oh_ohos3.2_sdk.tgz e6ca2d96aa7c628992ae0bbf4d14c2ca …

面试买书复习就能进大厂?

大家好,我是苍何。 现在进大仓是越来越难了,想通过简单的刷题面试背书,比几年前难的不少, 但也并非毫无希望,那究竟该如何准备才能有希望进大厂呢? 我总结了 4 点: 1、不差的学历背景 2、丰富…

EcmaScript标准-导入与导出-js

ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,所以它…

lwIP 开发指南(下)

目录 NETCONN 编程接口简介netbuf 数据缓冲区netconn 连接结构netconn 编程API 函数 NETCONN 编程接口UDP 实验NETCONN 实现UDPNETCONN 接口的UDP 实验硬件设计软件设计下载验证 NETCONN 接口编程TCP 客户端实验NETCONN 实现TCP 客户端连接步骤NETCONN 接口的TCPClient 实验硬件…

九、Delay函数

1、两个延时函数 vTaskDelay:至少等待指定个数的Tick Interrupt才能变为就绪态。vTaskDelayUntil:等待到指定的绝对时刻,才能变为就绪态。 2、函数原型 /* xTicksToDelay: 等待多少个Tick */ void vTaskDelay( const TickType_t xTicksToD…

1.(vue3.x+vite)封装组件

前端技术社区总目录(订阅之前请先查看该博客) 关联博客 2.(vue3.x+vite)组件注册并调用 1:创建组件目录package,并创建相关工程结构 2:编写组件内容(index.vue) 3:添加注册组件方法(index.js) 4:添加路由

QT按钮介绍

目录 按钮基类 QAbstractButton QPushButton QToolButton QRadioButton QCheckBox 按钮基类 QAbstractButton 这是按钮的基类,它是继承QWidget类 它可对当前的图标,标题等进行设置。 它有自己的一些信号与槽函数: /* 当按钮被激活时(即…

【C++的OpenCV】第十三课-OpenCV基础强化(一):绝对有用!Mat相关的一系列知识(基础->进阶)

🎉🎉🎉 欢迎各位来到小白 p i a o 的学习空间! \color{red}{欢迎各位来到小白piao的学习空间!} 欢迎各位来到小白piao的学习空间!🎉🎉🎉 💖💖&…

rhel8 网络操作学习

一、查询dns服务器地址汇总 1.查询dns服务器地址: (1)方法一:执行命令 cat /etc/resolv.conf 执行结果如下: nameserver后面就是dns服务器的ip地址。 (2)方法2:查看/etc/syscon…

Linux性能优化--性能工具-系统CPU

2.0.概述 本章概述了系统级的Linux性能工具。这些工具是你追踪性能问题时的第一道防线。 它们能展示整个系统的性能情况和哪些部分表现不好。 1.理解系统级性能的基本指标,包括CPU的使用情况。 2.明白哪些工具可以检索这些系统级性能指标。2.1CPU性能统计信息 为了…

基于单片机的煤气泄漏检测报警装置设计

一、项目介绍 煤气泄漏是一种常见的危险情况,可能导致火灾、爆炸和人员伤亡。为了及时发现煤气泄漏并采取相应的安全措施,设计了一种基于单片机的煤气泄漏检测报警装置。 主控芯片采用STM32F103C8T6作为主控芯片,具有强大的计算和控制能力。…

《PPT 自我介绍》:一本让你的职场表现更加出色的秘籍?

这里提供一个2000字左右的PPT自我介绍模板制作指南: 自我介绍是面试或工作中常见的情况,利用PPT可以给人留下更深刻的印象。但如何快速且专业地制作一个自我介绍PPT呢?这里给大家介绍几点技巧: 1. 选择一个简洁大方的PPT模板 首先要选择一…

最新AI创作系统源码ChatGPT源码+附详细搭建部署教程+AI绘画系统+支持国内AI提问模型

一、AI系统介绍 SparkAi创作系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧&am…

中秋海报制作不求人,详细教程来袭

中秋节是我国传统的节日,也是家庭团聚的重要时刻。在节日即将到来之际,如何设计一张温馨、美丽的中秋节海报,让家庭成员感受到节日的氛围和温暖呢?下面就为大家分享一些中秋节海报设计的秘诀。 一、选择合适的模版 登录乔拓云后&a…

NSSCTF做题(4)

[NISACTF 2022]checkin 简单的一道代码审计了 但是发现传参传不上去 后来发现 在选中nisactf的时候,注释里面的内容也被标记了 不知道是为什么,把它复制到010里边去看看 发现了不对的地方 nisactf应该传参 根据这个进行url编码 我们选择实际的参名和…

让文件传输变得更简单高效——推荐强大的Mac FTP客户端Transmit 5

无论是个人用户还是专业人士,文件传输都是我们日常工作中不可或缺的一部分。而针对Mac用户,Transmit 5正是一款强大且易用的FTP客户端,为您提供了最佳的文件传输体验。 Transmit 5在功能上非常丰富,可以满足各种文件传输需求。首…

uboot启动流程涉及reset函数

一. uboot启动流程中函数 之前了解了uboot链接脚本文件 u-boot.lds。 从 u-boot.lds 中我们已经知道了入口点是 arch/arm/lib/vectors.S 文件中的 _start。 本文了解 一下,uboot启动过程中涉及的 reset 函数。本文继上一篇文章学习,地址如下&#xff…

【2023保研】双非上岸东南网安

个人情况 学校:henu 专业:信息安全 排名:1/66 英语:六级500 竞赛:蓝桥杯PB国一,ISCC国一,密码数学挑战赛国三,还有其他一些省级水奖 论文:一篇EI在投(三作通…

华为OD机试 - 判断字符串子序列(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明 四、Java算法源码五、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&am…

web:[极客大挑战 2019]Upload

题目 页面显示为一个上传&#xff0c;猜测上传一句话木马文件 先查看源代码看一下有没有有用的信息&#xff0c;说明要先上传图片&#xff0c;先尝试上传含有一句话木马的图片 构造payload <?php eval($_POST[123]);?> 上传后页面显示为&#xff0c;不能包含<&…