数据结构-外部排序-(多路归并排序、败者树、置换选择排序、最佳归并树)

news2024/11/26 20:38:48

目录

一、外部归并排序

 二、败者树

 三、置换选择排序

四、最佳归并树


一、外部归并排序

 16个块,先每个块读入内存进行排序在输出回来,进行16次读和16次写

 两两归并,第一趟如下

 在两两归并

 时间分析

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

对r个初始归并段,做k路归并,则归并树可用k叉树表示,若树高为h,则归并趟树

 推到:k叉树第h层多有个结点,则满足       

初始归并段数量=文件总共记录/内存可容纳记录  r=n/l

加快速度方法

k增加(缓冲区个数增加):多路平衡归并,问题会每次比较大小次数太多

r减小(缓冲区大小增加) :构建更长初始归并段

 二、败者树

k增加,减少每次比对次数

 

 有了败着树,选出最小元素,只对比灰色每层就行,比对次   =h-1   

 三、置换选择排序

r减少,构造更长初始归并段

 按增序,开始读取3个记录,最小的(4)置换出去,并MINXMAX=4,,读取下一个,在获取最小的值是否小于MINXMAX,小于放入归并段1后面,

 如果大于定死这个(下次都不看),就获取下一个最小的值并大于MINXMAX的(14)置换出去后面,并更新MINXMAX14,然后继续置换,

直到3个位置的比 MINXMAX小,就重新一个归并段,在继续前面的置换流程一直结束 

四、最佳归并树

哈夫曼树构建

n路归并注意最后不满n路

 

 

 

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

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

相关文章

C语言基础知识:函数的声明和使用

目录 函数的声明 1.定义顺序 2.函数的声明 3.函数的声明格式 多源文件开发 1.为什么要有多个源文件 2.将sum函数写到其他源文件中 3.在main函数中调用sum函数 4.编译所有的源文件 5.链接所有的目标文件 #include 1.#include的作用 2.#include可以使用绝对路径 3.#…

Linux免交互操作

免交互操作 Here DocumentExpect工具 Here Document Here Document概述 使用I/O重定向的方式将命令列表提供给交互式程序或命令,比如 ftp 、cat 或 read 命令。Here Document 是标准输入的一种替代品,可以帮助脚本开发人员不必使用临时文件来构建输入信息…

docker搭建Elasticsearch集群

这里写目录标题 1.拉取es镜像2.配置配置文件3.启动容器4.启动过程中遇到的问题5.查看容器启动情况 1.拉取es镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.0版本根据自己需求进行拉取,我这边选择的是7.17.0,不同版本配置可能稍有…

ANR原理篇 - Input超时机制

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、事件分发流程1.1 事件分发流程概览1.2 InputDispatcher 三、ANR触发流程超时重…

ANR原理篇 - service/broadcast/provider超时机制

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、Service超时机制1.1 埋炸弹1.1.1 AS.realStartServiceLocked1.1.2 AS.bumpSer…

三大基础排序算法——我欲修仙(功法篇)

个人主页:【😊个人主页】 系列专栏:【❤️我欲修仙】 学习名言:莫等闲、白了少年头,空悲切。——岳飞 系列文章目录 第一章 ❤️ 学习前的必知知识 第二章 ❤️ 二分查找 文章目录 系列文章目录前言🚗&…

Netty实战(三)

Netty的组件和设计 一、Channel、EventLoop 和 ChannelFuture1.1 Channel 接口1.2 EventLoop 接口1.3 ChannelFuture 接口 二、ChannelHandler 和 ChannelPipeline2.1 ChannelHandler 接口2.2 ChannelPipeline 接口2.3 编码器和解码器2.4 抽象类 SimpleChannelInboundHandler 三…

suricata中DPDK收发包源码分析2

《suricata中DPDK收发包源码分析1》中分析了整体的DPDK收发包框架代码,今天我们继续来深入了解一下一些细节方面的问题。 目录 Q1:收发包线程模式在代码中是怎样确定的? Q2: DPDK库的初始化rte_eal_init在哪里调用的? Q3: 对网…

Linux中LV Status的状态为NOT available

今天下午有现场反馈备份磁盘找不到了,使用lvm方式的。提供了todesk帮忙看下, 首先使用 blkid查看,确实看不到备份磁盘的UUID,使用lvdisplay查看状态,状态不对了 [rootdb1 ~]# lvdisplay --- Logical volume --- …

.Vue3项目初始化

文章目录 1.Vue3项目初始化1.1 创建vue项目1.2 vue 初始化1.3 git 项目管理1.4 配置iconfig.json1.5 element 按需引入1.6 element 主题色的定制1.7 axios的基础配置1.8 router路由的配置 1.Vue3项目初始化 1.1 创建vue项目 npm init vuelatest1.2 vue 初始化 npm install1.…

【2023/05/16】MonteCarlo

Hello!大家好,我是霜淮子,2023倒计时第11天。 Share O Beauty,find theyself in love,not in the flattery of thymirror. 译文: 啊,美啊,在爱中找你自己吧,不要到你镜子的诌谀中去寻找。 M…

[遗传学]转座因子的结构与功能

本篇文章主要带你了解:转座因子的发现和分类;原核生物以及真核生物种的转座子;转座作用的分子机制以及转座因子的遗传学效应和应用. 🧬转座因子的发现和分类 🧬转座因子的概念 转座因子(transposable element)是在转座酶(transposase&#xf…

Class 03 - R语言的 Vectors(向量) 与 lists(列表)

Class 03 - R语言的 Vector与 列表 list R语言语法脚本文件的创建、保存、和修改名称第一个函数使用帮助功能查看函数详细说明语法问题变量与赋值定义变量名称格式调用变量 R中的数据结构Vectors (向量)创建向量查看向量的性质查看数据类型 typeof()查看数据长度 length()检查…

Elasticsearch 核心技术(十):GEO 地理查询(geo_bounding_box、geo_distance、geo_shape)

❤️ 博客主页:水滴技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 🌸 订阅专栏:大数据核心技术从入门到精通 文章目录 一、地理数据类型1.1、geo_point 地理点类型1.1.1、创建一个含有 geo_point 字…

opencv_c++学习(八)

一、两张图像的像素比较 比较最大最小 最小: min(lnputArray src1, InputArray src2, outputArray dst)最大: max(lnputArray src1, InputArray src2, outputArray dst)src1 :第一个图像矩阵,可以是任意通道数的矩阵。 src2:第二个图像矩…

电源电压过冲

前言: 前段时间突然想起来以前的一个问题,这个问题相信大家也都遇到过,甚至是解决过,或者没解决,也就不了了之,今天这篇文章,主要来讲下这个问题,看完喜欢的欢迎给我留言或者点赞&a…

【Linux】常见指令

🌇个人主页:平凡的小苏 📚学习格言:别人可以拷贝我的模式,但不能拷贝我不断往前的激情 🛸C专栏:Linux修炼内功基地 家人们更新不易,你们的👍点赞👍和⭐关注⭐…

EasyYapi插件—快速生成API接口文档

EasyYapi插件—快速生成API接口文档 1. 功能 导出http到(Controller注解类) YapiPostmanmarkdown导出RPC到 YapimarkdownCall api调用API接口 注意点: 注释中可以使用module标注模块所属的模块。表示接口会发布到yapi模块下;只…

生存分析利器:Python 中的 Kaplan-Meier Fitter 类详解

KaplanMeierFitter是lifelines库中用于计算生存分析的一个类。使用KaplanMeierFitter类,我们可以对我们的数据进行不同组之间的生存分析,比如根据年龄、性别、治疗手段等分类变量进行分组分析。 该类包含许多方法和属性,其中最常用的是fit()…

FPGA复位信号设计讨论

复位概述 复位作为电子系统中最常见的信号同时也是最重要的信号,它对工程师整体的设计表现有着极大的影响。复位信号可能深刻影响设计的性能表现,功耗,面积等等。对于一个优秀的系统设计,很难不把复位信号当成一个关键信号来设计。…