08-8.6.2 败者树

👋 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


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

多路平衡归并带来的问题

外部排序时间开销 = 读写外存的时间 + 内部排序所需时间 + 内部归并所需时间
归并趟数 S = l o g k r S=log_kr S=logkr,归并路数 k 增加,归并趟数 S 见效,读写磁盘总次数减少

使用 k 路平衡归并策略,选出一个最小元素需要对比关键字 k − 1 k-1 k1 次,导致内部归并所需时间增加
对于这个问题,可以使用 “败者树”进行优化

败者树的构造

可视为一颗完全二叉树(多了一个头)

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

  • 每个叶子结点对应一个归并段
  • 分支结点记录失败败者来自哪个归并段
  • 根结点记录冠军来自哪个归并段

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

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

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

相关文章

QT使用QPainter绘制多边形维度图

多边形统计维度图是一种用于展示多个维度的数据的图表。它通过将各个维度表示为图表中的多边形的边,根据数据的大小和比例来确定各个维度的长度。 一、简述 本示例实现六边形战力统计维度图,一种将六个维度的战力统计以六边形图形展示的方法。六个维度是…

六、元组、字典、集合

文章目录 学习目标一、元组的使用二、字典的基本使用2.1 字典使用注意事项2.2 字典的增删改查2.3 update方法的使用2.4 合并多个dict2.5 字典的遍历2.6 字典的推导式三、集合的使用3.1 set的使用3.2 set的操作3.3 集合的高级用法四、eval与json五、可迭代对象通用方法5.1 运算符…

五、python列表

文章目录 学习目标一、列表的基本使用二、列表的遍历2.1 while循环遍历2.2 for...in 循环遍历三、列表的排序3.1 交换两个变量的值3.2 冒泡排序3.3 列表的排序与反转方法四、列表的复制4.1 可变数据类型与不可变数据类型4.2 列表的复制五、列表的嵌套(略)六、列表推导式学习目…

基于形状匹配原始版放出来(给有用的人参考2)

我们仍然讲学习。 昨天已经把80万像素1024*768的图像变成256*192图像了,并且使用iir高斯平滑保留了特征。 下面做的就是用roi把特征图扣出来,也就是所谓的模板,你在原图中的roi假定是200*200,那么在256*192中,就变成…

怎样在 PostgreSQL 中优化对复合索引的选择性?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 怎样在 PostgreSQL 中优化对复合索引的选择性一、理解复合索引的概念二、选择性的重要性三、优化复合索…

ollama编译安装@focal jammy Ubuntu @FreeBSD jail

Ollama是一个用于在本地运行大型语言模型(LLM)的开源框架。它支持多种操作系统,但是唯独不支持FreeBSD,于是尝试在FreeBSD的jail里安装Ubuntu,Ubuntu里再安装ollama。 先上结论,好像focal jail无法编译成功…

shell脚本-linux如何在脚本中远程到一台linux机器并执行命令

需求:我们需要从11.0.1.17远程到11.0.1.16上执行命令 实现: 1.让11.0.1.17 可以免密登录到11.0.1.16 [rootlocalhost ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created d…

【问题记录】Docker配置mongodb副本集实现数据流实时获取

配置mongodb副本集实现数据流实时获取 前言操作步骤1. docker拉取mongodb镜像2. 连接mongo1镜像的mongosh3. 在mongosh中初始化副本集 注意点 前言 由于想用nodejs实现实时获取Mongodb数据流,但是报错显示需要有副本集的mongodb才能实现实时获取信息流,…

扫地机器人如何解决室内空气污染问题

扫地机器人解决室内空气污染问题主要通过以下几个方面来实现: 一、高效清洁减少地面污染源 ① 地面清扫能力:扫地机器人能够自动或手动控制进行地面清扫,有效清除地面上的各种污渍、灰尘和毛发等污染物。这些污染物是室内空气中的重要污染源…

27.js实现鼠标拖拽

e.offsetX是鼠标距离准确事件源的左上角距离 e.clientX是鼠标距离浏览器可视窗口左上角的距离 e.pageX是鼠标距离文档左上角的距离 /* 当鼠标点击div时开始挪动,当鼠标抬起,div静止——事件源是div 当鼠标点击后,鼠标在移动——事件源…

java 前端上传文件后端解析并转发到第三方存储,Hutool 工具

单个文件上传 PostMapping("/upload")public MyResponse<?> upload(MultipartFile file) {if (multipartFiles null || multipartFiles.length 0) {throw new MessageException("未选择文件");}InputStreamResource inputStreamResource new Inp…

通过命令行工作流提升工作效率的实战教程(持续更新)

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

从三个方向来谈谈开源项目有哪些机遇与挑战

开源项目有哪些机遇与挑战&#xff1f; 随着全球经济和科技环境的快速变化&#xff0c;开源软件项目的蓬勃发展成为了开发者社区的热门话题。越来越多的开发者和企业选择参与开源项目&#xff0c;以推动技术创新和实现协作共赢。你如何看待当前开源项目的发展趋势&#xff1f;…

SpringCache介绍

SpringCache是Spring提供的缓存框架。提供了基于注解的缓存功能。 SpringCache提供了一层抽象&#xff0c;底层可以切换不同的缓存实现&#xff08;只需要导入不同的Jar包即可&#xff09;&#xff0c;如EHCache&#xff0c;Caffeine&#xff0c;Redis。 2个重要依赖已经导入&a…

Vue 3中常用的生命周期钩子和监听器的详细分析

目录 前言1. onMounted2. watch3. computed4. 其他 前言 分析常用的一些生命周期钩子和监听器可以帮助我们在组件中处理数据加载、状态变化和响应式更新 1. onMounted 生命周期钩子&#xff0c;在组件挂载后执行。它适合用于初始化数据加载或执行一次性的操作 <template…

简单一阶滤波器设计:matlab和C实现

一、简单一阶滤波器的模型 二、示例 得: y(n)-0.9y(n-1)=x(n)+0.05x(n-1),即:y(n)=0.9y(n-1)+x(n)+0.05x(n-1) 已知:,并且有: A. 假设输入序列有N=100个点 B. 系统初始状态为0,即y(-1)=0 C. 输入序列是因果序列,

分析AI是在帮助开发者还是取代他们

AI在软件开发中起到了辅助作用&#xff0c;帮助开发者提高生产效率和质量。它可以通过代码生成、错误检测和自动化测试等功能&#xff0c;加速开发流程&#xff0c;减少人为错误并改善软件质量。AI工具可以解放开发者的时间和精力&#xff0c;让他们可以更专注于解决复杂问题和…

【OpenRecall】超越 Windows Recall,OpenRecall 为你的隐私和自由而战

引言 随着 Windows 11 的 Recall 功能推出&#xff0c;我们看到了数字记忆回顾的全新可能性。然而&#xff0c;这项功能受限于特定的硬件——Copilot 认证的 Windows 硬件&#xff0c;并且仅在 Windows 平台上可用。对于追求隐私和硬件灵活性的用户来说&#xff0c;这无疑是个…

长按加速- 解决react - setInterval下无法更新问题

最开始直接setInterval里&#xff0c;useState硬写&#xff0c;发现更新不&#xff0c;固定值 换let&#xff0c;发现dom更新不了 正确做法是用ref 并且pc端可以长按的&#xff0c;只是要用onTouchStart&#xff0c;不要用onMouseDown onTouchStart{handleMouseDown} onTou…

在设计电气系统时,电气工程师需要考虑哪些关键因素?

在设计电气系统时&#xff0c;电气工程师需要考虑多个关键因素&#xff0c;以确保系统的安全性、可靠性、效率和经济性。我收集归类了一份plc学习包&#xff0c;对于新手而言简直不要太棒&#xff0c;里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言…