当前位置: 首页 > news >正文

排序:败者树和置换选择排序(解决外部排序中的优化问题)

1.算法目的(败者树)

解决多路平衡归并带来的问题。
在外部排序中,使用k路平衡归并策略,
选出一个最小元素需要对比关键字(k-1)次,
导致内部归并所需时间增加。(可用“败者树”进行优化)

2.败者树的定义

败者树:可视为一棵完全二叉树(多了一个头头)。
k个叶结点分别是当前参加比较的元素,
非叶子结点用来记忆左右子树中的“失败者”,
而让胜者往上继续进行比较,一直到根结点。

3.败者树在多路平衡归并中的应用

在这里插入图片描述

对于k路归并,第一次构造败者,树需要对比关键字k-1次。
有了败者树,选出最小元素,只需对比关键字 「 l o g 2 k ∣ 「log_2k| log2k次。

4.败者树的实现思路

k路归并的败者树只需要定义一个长度为k的数组即可。

5.置换选择排序

可用“置换-选择排序"进一步减少初始归并段数量.
在这里插入图片描述

注:假设用于内部排序的内存工作区只能容纳3个记录。

若WA内的关键字都比MINIMAX更小,则该归并段在此截止.

使用置换-选择排序,
可以让每个初始归并段的长度超越内存工作区大小的限制.

1.步骤

设初始待排文件为FI,初始归并段输出文件为FO,内存工作区为WA,
FO和WA的初始状态为空,WA可容纳w个记录。
置换-选择算法的步骤如下:

  1. 从FI输入w个记录到工作区WA。
  2. 从WA中选出其中关键字取最小值的记录,记为MINIMAX记录。
  3. 将MINIMAX记录输出到FO中去。
  4. 若FI不空,则从FI输入下一个记录到WA中。
  5. 从WA中所有关键字比MINIMAX记录的关键字大的记录中选出最小关键字记录,作为新的MINIMAX记录。
  6. 重复3~5,直至在WA中选不出新的MINIMAX记录为止,由此得到一个初始归并段,输出一个归并段的结束标志到FO中去。
  7. 重复2~6,直至WA为空。由此得到全部初始归并段。

相关文章:

排序:败者树和置换选择排序(解决外部排序中的优化问题)

1.算法目的(败者树) 解决多路平衡归并带来的问题。 在外部排序中,使用k路平衡归并策略, 选出一个最小元素需要对比关键字(k-1)次, 导致内部归并所需时间增加。(可用“败者树”进行优化) 2.败者树的定义 …...

【超分:光谱响应函数】

Spectral Response Function-Guided Deep Optimization-Driven Network for Spectral Super-Resolution (光谱响应函数引导的深度优化驱动网络光谱超分辨) 高光谱图像(HSI)是许多研究工作的关键。光谱超分辨率(SSR&a…...

IoT 物联网 JavaScript 全栈开发,构建家居环境监控系统实战

智能家居环境监测端到端场景,全栈JavaScript开发,串联Ruff硬件、温湿度和空气质量传感器、阿里云 IoT、Serverless函数计算、百度ECharts可视化、最终以微信小程序形式在微信里实时展示家中实时温度,湿度,PM2.5指数。 01 技术架构…...

jupyter notebook可以打开,但无法打开.ipynb文件,报错500 : Internal Server Error

1、错误信息 2、解决办法 打开Anaconda Promt界面,进入自己的虚拟环境。在命令行输入以下指令: pip install --upgrade nbconvert...

latex图片编号+表格编号

对编号重新自定义 \renewcommand{\thefigure}{数字编号x}重新命名图的编号\renewcommand{\thetable}{数字编号x}重新命名表的编号编号含义 平时看书经常看到“图1.2”这样的编号,含义是第1章的第2幅插图;或者“图1.1.2”,含义是第1章第1节的…...

【1day】用友时空KSOA平台 imagefield接口SQL注入漏洞学习

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录...

linux之美

linux系统和window系统区别 Linux和Windows是两个不同的操作系统。Linux是一个开源操作系统,而Windows是一个商业操作系统。 Linux可以访问源代码并根据用户的需求进行修改,而Windows无法访问源代码。 Linux是免费的,而Windows是商业操作系…...

5、超链接标签

5、超链接标签 超链接标签就是我们常说的a标签 <a href"path" target"目标窗口位置">连接文本或图像</a> <!-- href&#xff08;必填项&#xff09;&#xff1a;连接路径 target&#xff1a;连接在哪个窗口打开&#xff1f;是在新页面打开…...

CCF CSP认证历年题目自练 Day15

CCF CSP认证历年题目自练 Day15 题目一 试题编号&#xff1a; 201709-1 试题名称&#xff1a; 打酱油 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 256.0MB 问题描述&#xff1a; 问题描述   小明带着N元钱去买酱油。酱油10块钱一瓶&#xff0c;商家进行促销&#xf…...

APP的收费模式及特点

移动应用&#xff08;APP&#xff09;的收费模式多种多样&#xff0c;可以根据开发者的需求、目标受众和应用的性质来选择。以下是一些常见的APP收费模式及其特点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎…...

opencv: 解决保存视频失败的问题

摘要&#xff1a;opencv能读取视频&#xff0c;但保存视频时报错。 一、首先要确保已经下载了openh264.dll文件&#xff0c;否则保存的视频无法打开&#xff0c;详细可以浏览这个&#xff1a;opencv&#xff1a;保存视频。 二、保存视频时出现一下问题&#xff1a; OpenCV:…...

源码编译安装zstd

目录 1 下载源码https://github.com/facebook/zstd 2 解压 3 在解压后的目录里输入make 4 sudo make install 安装完毕 5 输入whereis zstd 检查安装结果 1 下载源码https://github.com/facebook/zstd 2 解压 3 在解压后的目录里输入make 4 sudo make install 安装完毕…...

LabVIEW开发实时自动化多物镜云计算全玻片成像装置

LabVIEW开发实时自动化多物镜云计算全玻片成像装置 数字病理学领域正在迅速发展&#xff0c;这主要是由于计算机处理能力、数据传输速度、软件创新和云存储解决方案方面的技术进步。因此&#xff0c;病理科室不仅将数字成像用于图像存档等简单任务&#xff0c;还用于远程病理学…...

【深度学习实验】卷积神经网络(二):自定义简单的二维卷积神经网络

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 二维互相关运算&#xff08;corr2d&#xff09; 2. 二维卷积层类&#xff08;Conv2D&#xff09; a. __init__&#xff08;初始化&#xff09; b. forward(前向传…...

Socket网络编程练习题三:客户端上传文件到服务器

题目 客户端&#xff1a;将本地文件上传到服务器&#xff0c;接收服务器的反馈服务端&#xff1a;接收客户端上传的文件&#xff0c;上传完毕之后给出反馈 代码实战 1、客户端代码 package com.heima;import java.io.*; import java.net.Socket;public class Client {publi…...

Excel技巧之【锁定工作簿】

Excel工作簿是Excel工作区中一个或多个工作表的集合&#xff0c;我们知道Excel可以设置锁定工作表&#xff0c;防止意外或被他人修改&#xff0c;但可能有小伙伴不知道&#xff0c;Excel工作簿也同样可以设置锁定&#xff0c;防止更改。 那工作簿锁定后会怎么样呢&#xff1f;…...

用于自然语言处理的 Python:理解文本数据

一、说明 Python是一种功能强大的编程语言&#xff0c;在自然语言处理&#xff08;NLP&#xff09;领域获得了极大的普及。凭借其丰富的库集&#xff0c;Python 为处理和分析文本数据提供了一个全面的生态系统。在本文中&#xff0c;我们将介绍 Python for NLP 的一些基础知识&…...

历史服务器

二、配置历史服务器 在spark-3.1.1-bin-hadoop2.7/conf/spark-defaults.conf添加以下配置&#xff0c;其中d:/log/spark为日志保存位置 spark.eventLog.enabled true spark.eventLog.dir file:///d:/log/spark spark.eventLog.compress true spark.history.fs.logDirectory fil…...

竞赛无人机搭积木式编程(四)---2023年TI电赛G题空地协同智能消防系统(无人机部分)

竞赛无人机搭积木式编程&#xff08;四&#xff09; ---2023年TI电赛G题空地协同智能消防系统&#xff08;无人机部分&#xff09; 无名小哥 2023年9月15日 赛题分析与解题思路综述 飞控用户在学习了TI电赛往届真题开源方案以及用户自定义航点自动飞行功能方案讲解后&#x…...

深入理解JavaScript中的事件冒泡与事件捕获

在JavaScript中&#xff0c;事件是交互式网页开发中的关键概念之一。了解事件冒泡和事件捕获是成为一名优秀的前端开发者所必需的技能之一。本文将深入探讨这两个概念&#xff0c;解释它们是如何工作的&#xff0c;以及如何在实际应用中使用它们来处理事件。 一.什么是事件冒泡…...

纯css html 真实水滴效果

惯例,不多说直接上图 秉承着开源精神,我们将这段代码无私地分享给大家&#xff0c;因为我们深信&#xff0c;信息的共享和互相学习是推动科技进步的关键。我们鼓励大家在使用这段代码的同时&#xff0c;也能够将其中的原理、思想和经验分享给更多的人。 这份代码是我们团队用心…...

HBASE集群主节点迁移割接手动操作步骤

HBASE集群主节点迁移割接手动操作步骤 HBASE集群主节点指的是包含zk、nn、HM和rm服务的节点&#xff0c;一般这类服务都是一起复用在同一批节点上&#xff0c;我把这一类节点统称为HBASE集群主节点。 本文中使用了rsync、pssh等工具&#xff0c;这类是开源的&#xff0c;自己…...

TRB爆仓分析,套利分析,行情判断!

毫无疑问昨日TRB又成为涨幅榜的明星&#xff0c;总结下来&#xff0c;多军赚麻&#xff0c;空头爆仓&#xff0c;套利爽歪歪&#xff01; 先说风险最小的套利情况&#xff0c;这里两种套利都能实现收益。 现货与永续合约的资金费率套利年化资金费率达到惊人的3285%——DeFi的…...

LVGL - RV1109 LVGL UI刷新效率优化-02

说明 前面好早写过一个文章&#xff0c;说明如何把LVGL移到RV1109上的操作&#xff0c;使用DRM方式&#xff01;但出现刷新效率不高的问题&#xff01; 因为一直没有真正的应用在产品中&#xff0c;所以也就放下了&#xff01; 最近开发上需要考虑低成本&#xff0c;低内存的…...

5、布局管理器

5、布局管理器 一、流式布局 package com.dryant.lesson1;import java.awt.*;public class TestFlowLayout {public static void main(String[] args) {Frame frame new Frame();Button button1 new Button("bt1");Button button2 new Button("bt2");…...

What is a UDP Flood Attack?

用户数据报协议 &#xff08;UDP&#xff09; 是计算机网络中使用的无连接、不可靠的协议。它在互联网协议 &#xff08;IP&#xff09; 的传输层上运行&#xff0c;并提供跨网络的快速、高效的数据传输。与TCP&#xff08;其更可靠的对应物&#xff09;不同&#xff0c;UDP不提…...

多核 ARM Server 性能调优

概述 thinkforce ARM Server是多核心ARM服务器&#xff0c;硬件环境资源如下&#xff1a; CPU信息如下: yuxunyuxun:/$ lscpu Architecture: aarch64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian …...

oracle执行计划中,同一条语句块,在不同情况下执行计划不一样问题。子查询,union 导致索引失效。

场景&#xff1a; 需要获取部分数据集(视图)的业务时间最大值&#xff0c;希望只通过一条语句获取多个的最大值。 则使用select (视图1业务时间最大值),(视图2业务时间最大值),(视图3业务时间最大值) from dual 程序执行过程中&#xff0c;发现语句执行较慢&#xff0c;则进行s…...

【新的小主机】向日葵远程控制ubuntu

向日葵远程控制ubuntu 一、简介二、问题及解决方法2.1 向日葵远程连接Ubuntu22主机黑屏&#xff1f;2.2 Ubuntu如何向日葵开机自启&#xff1f;2.3 无显示器情况下&#xff0c;windows远程桌面连接Ubuntu? 三、待续。。。 一、简介 系统&#xff1a;ubuntu22.04.3 目的&#…...

在Android studio高版本上使用低版本的Github项目库报错未能解析:Landroid/support/v4/app/FrageActivity;

我在我的项目中有一个导包: // 基础依赖包&#xff0c;必须要依赖 沉浸式狀態欄 implementation com.gyf.immersionbar:immersionbar:3.0.0 但是我的as版本比较高,我使用这个导包里面的方法会直接报错: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/suppor…...

铁岭网站建设/网站推广的概念

和List类型不同的是&#xff0c;Set集合中不允许出现重复的元素Set可包含的最大元素数量是4294967259存储Set的常用命令&#xff1a; 添加/删除元素获得集合中的元素集合中的差集运算集合中的交集运算集合中的并集运算扩展命令> sadd myset a b c //向集合中添加元素 (integ…...

建筑工程网 装修/关键词查询优化

剑指第二版第7题重建二叉树 这算是一道老题目了,通过前续遍历和中序遍历创建一个二叉树,我记得还有一道反序列二叉树的题,只给了三种dfs中的一种,区别还是很大的,没有什么可以说的了,找规律就可以了. class Solution {HashMap<Integer, Integer> map new HashMap<&…...

自己做的网站网页打开速度慢/现在感染症状有哪些

LT项目使用的EIP是运行在JETTY上&#xff0c;此文供开发和实施参考 1、windows下 win下部署多个jetty8很简单&#xff0c;首先将jetty8复制多个文件夹&#xff0c;其次按分配的端口号修改[JETTY_HOME]/etc/jetty.xml和jetty-proxy.xml。如该文件夹下的jetty分配8888端口 jetty.…...

江苏连云港网站建设公司/牡丹江seo

会有如题的思考&#xff0c;是因为我一直有一个疑问java文件的编码会影响字符串的编码嘛&#xff1f; 因此自然而然就想到了java编译后的文件的编码。 1 javac在控制台编译java类文件 手动建立一个java文件Demo.java&#xff0c;并保存。 此时Demo.java文件的编码为ANSI,中…...

建设门户网站多少钱/毛戈平化妆培训学校官网

点击上方蓝色字体&#xff0c;选择“标星公众号”优质文章&#xff0c;第一时间送达关注公众号后台回复pay或mall获取实战项目资料视频作者&#xff1a;糊糊糊糊糊了www.cnblogs.com/rynxiao/p/13825438.html分不清轮询、长轮询&#xff1f;不知道什么时候该用websocket还是SSE…...

响应式个人网站模板下载/网络营销app有哪些

pyton实现二分查找 搜索&#xff1a; 二分查找&#xff1a; 递归代码&#xff1a; def binary_search(alist,item):"""二分查找"""low0nlen(alist)if n>0:#递归终止条件midn//2if itemalist[mid]:return Trueelif item<alist[mid]:retur…...