news 2026/7/26 20:12:07

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【数据结构】败者树、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计算

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/26 13:50:49

基于人类反馈的强化学习:对齐AI与人类价值观的技术革命

一、什么是基于人类反馈的强化学习&#xff1f;核心定义基于人类反馈的强化学习是一种训练范式&#xff0c;通过将人类的偏好和价值观作为奖励信号&#xff0c;来优化AI模型的行为&#xff0c;使其更好地与人类意图和价值观对齐。生动比喻&#xff1a;学徒向大师学习传统强化学…

作者头像 李华
网站建设 2026/7/26 21:48:48

Gurobi 重磅回归GAMS与GAMSPy

求解速度非凡的利器Gurobi再次回归GAMS生态系统倘若优化运行时间缩短一半--抑或曾认为棘手的复杂混合整数规划问题&#xff0c;如今能在数分钟内收敛&#xff1f;随着Gurobi 重磅回归 GAMS 生态系统&#xff0c;用户得以再度调用这款顶尖的高性能求解器--它已完全集成&#xff…

作者头像 李华
网站建设 2026/7/27 5:16:41

7年前端开发遭不住了。 是的。裁员的风,也吹到了我这里。

这是前端程序员在某红薯平台自述前端被裁的真实经历&#xff01; 2025开年&#xff0c;AI技术打得火热&#xff0c;正在改变前端人的职业命运&#xff1a; 阿里云核心业务全部接入Agent体系&#xff1b; 字节跳动30%前端岗位要求大模型开发能力&#xff1b; 腾讯、京东、百度开…

作者头像 李华
网站建设 2026/7/26 17:37:26

天机学堂-优惠券领取功能-day10(八)

day10接口 1 查询发放中的优惠券接口说明查询发放中的优惠券请求方式GET请求路径/coupons/list请求参数无返回值[ { "id": "110", // 优惠券id "name": "年中大促", // 优惠券名称 "specific": true, // 优惠券是…

作者头像 李华
网站建设 2026/7/27 13:16:13

2*8的lcd显示屏自动居中

一、核心代码&#xff08;直接可用&#xff09;1️⃣ 计算 GBK 显示宽度int gbkWidth(const std::string &s) {int w 0;for (size_t i 0; i < s.size(); ){unsigned char c s[i];if (c & 0x80) { // GBK 中文w 2;i 2;} else {w 1;i 1;}}return w; }2️⃣ 按…

作者头像 李华