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

【数据结构】败者树、B树、排序、查找

目录

败者树(Loser Tree)

B树(B-Tree)

排序算法总结

查找算法总结


败者树(Loser Tree)

多路平衡归并排序(胜者树、败者树)算法详解 - C语言中文网

多路归并、败者树、置换-选择排序、最佳归并树 - guanyubo - 博客园

【数据结构】败者树的建树与比较过程-CSDN博客

(99+ 封私信 / 82 条消息) 多路归并排序的时候,为什么要采用败者树? - 知乎

项目内容
定义一种完全二叉树,用于在多路归并排序中快速选出最小(或最大)元素,减少比较次数。
核心思想每个非叶子节点记录“失败者”(即比较中较大的值),而胜者向上继续比较,最终根节点记录冠军(最小者)。
结构特点- 叶子节点:存放各归并段的当前元素
- 内部节点:记录失败者索引
- 根节点的父节点:记录冠军(最小者)
建树过程从最后一个叶子节点开始向上调整,依次比较兄弟叶子节点,失败者存入父节点,胜者继续向上。
调整过程当冠军输出后,从对应归并段读入新元素,沿路径向上与父节点比较,更新失败者和胜者。
优点比直接比较各归并段首元素更高效,每次调整只需log₂k次比较(k为归并路数)。
应用场景外部排序(多路归并)
408考点- 建树与调整过程
- 比较次数计算
- 与胜者树的区别(败者树无需记录胜者到中间节点)

B树(B-Tree)

项目内容
定义多路平衡查找树,常用于磁盘等外存数据存储。
性质1. 每个节点最多有 m 棵子树(m阶B树)
2. 根节点至少有两棵子树(除非为叶子)
3. 非根非叶节点至少有 ⌈m/2⌉ 棵子树
4. 所有叶子出现在同一层,不带信息(实际B+树叶子含信息)
节点结构(n, P₀, K₁, P₁, K₂, …, Kₙ, Pₙ)
n:关键字数;Kᵢ:关键字;Pᵢ:指向子树的指针
查找类似二叉查找树,在每个节点内顺序或二分查找,沿指针向下。
插入先查找插入位置,插入后若节点关键字数 > m-1,则分裂:中间关键字上移,左右分成两个节点。
删除1. 若在非叶节点,用后继覆盖再删后继
2. 删除后若关键字数 < ⌈m/2⌉-1,则向兄弟借或与兄弟合并
高度与性能高度 h ≤ logₘ((n+1)/2) + 1,查找、插入、删除磁盘I/O次数为 O(logₘn)
应用场景文件系统、数据库索引
408考点- B树定义与性质
- 插入、删除过程及分裂/合并
- 高度计算与磁盘I/O次数分析
- B树与B+树区别(B+树所有关键字在叶子,叶子链表连接)

(99+ 封私信 / 82 条消息) 图解:什么是B树?(心中有 B 树,做人要虚心)一文读懂B-树 - 知乎

数据结构:B树、B+树、B*树-CSDN博客

b树,b+树,b-树,红黑树详解一锅端 - 你的雷哥 - 博客园

排序算法总结

【总结】【数据结构】排序-CSDN博客

排序方法平均时间复杂度最坏时间复杂度空间复杂度稳定性适用场景
直接插入O(n²)O(n²)O(1)稳定小规模或基本有序
折半插入O(n²)O(n²)O(1)稳定减少比较次数,移动次数不变
希尔排序O(n¹·³)O(n²)O(1)不稳定中等规模,插入排序改进
冒泡排序O(n²)O(n²)O(1)稳定教学用,效率低
快速排序O(n log n)O(n²)O(log n)~O(n)不稳定大规模,内部排序,基于分治
简单选择O(n²)O(n²)O(1)不稳定教学用
堆排序O(n log n)O(n log n)O(1)不稳定大规模,适合取前k个
归并排序O(n log n)O(n log n)O(n)稳定外部排序、链表排序
基数排序O(d(n+r))O(d(n+r))O(n+r)稳定多关键字,位数固定
外部排序多路归并+败者树依赖磁盘I/OO(1)缓冲区稳定大文件排序
  • 时间/空间复杂度分析

  • 稳定性判断

  • 排序过程模拟(尤其是快排、堆排、归并)

  • 外部排序流程(生成初始归并段、多路归并、败者树优化)

查找算法总结

查找方法平均时间复杂度最坏时间复杂度空间复杂度特点
顺序查找O(n)O(n)O(1)无序或有序表,简单
折半查找O(log n)O(log n)O(1)有序顺序表,需随机存取
分块查找O(√n) ~ O(log n)O(n)O(1)块内无序、块间有序
二叉查找树O(log n)O(n)O(n)可能退化
平衡二叉树(AVL)O(log n)O(log n)O(n)插入删除需旋转
B树/B+树O(logₘ n)O(logₘ n)O(n)外存查找,m阶B树
哈希查找O(1)O(n)O(n)冲突影响性能

哈希表重点

  • 构造方法:直接定址、除留余数、平方取中等

  • 冲突处理:开放定址(线性探测、二次探测)、链地址法

  • 性能分析:ASL成功/失败、装填因子 α = n/m

  • 顺序/折半/分块查找的过程与ASL计算

  • BST/AVL的查找、插入、删除及旋转

  • B树查找、插入删除过程

  • 哈希函数设计、冲突处理、ASL计算

http://www.cnnetsun.cn/news/114033.html

相关文章:

  • 理解线程不安全:从观察到原因分析
  • 《Java Web开发入门很简单》——学习笔记,新手入门,收藏这篇就够了
  • 2025年,国内外最火的10款降AI率工具亲测!(持续更新)
  • 基于大数据的餐饮食材管理系统的设计与实现开题报告
  • 基于大数据的交通信号智能控制系统的设计与实现开题报告
  • 基于大数据的交通信号智能控制系统的设计与实现任务书
  • 蜘蛛池站点优化思路分享
  • 2025 OA 选型关键看这 4 点:集成、灵活、安全、易用,附高性价比系统清单
  • 图神经网络与pytorch
  • Xiaomi 商城页面布局(部分)
  • FPGA以太网升级程序:便捷qspi Flash升级,具备校验功能,适用于Xilinx 7系列...
  • 运料小车装卸料控制:西门子1200PLC与TP700触摸屏联机仿真博途16
  • S32K311启动过程中,向量表重定向
  • 从蓝图到产线:高效产品信息传递的桥梁建设
  • 时间复杂度
  • 网站建设公司怎么选?2025年网站设计制作公司推荐指南
  • 今天咱们来聊一个挺有意思的优化算法改进——基于透镜成像反向策略的海洋捕食者算法。这个改进版本在原始MPA基础上搞了点新花样,咱们直接上干货看代码实现
  • Gitee:本土化DevOps平台如何重塑中国开发者生态
  • vCenter Server 8.0U3h 新增功能简介
  • Cisco NX-OS 10.6(2)F 发布 - 数据中心网络操作系统
  • Ubuntu24.04无操作卡死,无法唤醒问题以及内核版本切换记录
  • 全场景覆盖・全流程智控:分布式解决方案让多功能厅 “不止于多”
  • 【轨物方案】聚焦锯床设备智能化升级,打造工业互联网新范式
  • 【轨物交流】轨物科技亮相2025高校科技成果交易会
  • cesium加载geotiff的 四种方法
  • 【毕业设计】基于python的运维管理平台的设计与实现
  • 苹果 iOS 开发真正复杂的不是写代码这方面,是证书、构建、上架
  • FSMC-TFTLCD显示实验(5):显示一个字符串的函数传递过程追踪~
  • 基于Android的课程考勤及作业提交系统
  • 飞易通蓝牙与Wi-Fi模块:医疗产品无线连接的全能助手