news 2026/6/10 11:48:07

哈希表是一种基于映射关系的存储结构,其核心是哈希函数 $ H(key) $,它将任意关键字转换为地址空间内的索引值,从而实现快速存取

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
哈希表是一种基于映射关系的存储结构,其核心是哈希函数 $ H(key) $,它将任意关键字转换为地址空间内的索引值,从而实现快速存取

B-树的插入与删除操作需严格维护其结构平衡性。在插入时,首先将关键字插入到合适的叶节点中,若该节点关键字数量超过上限 $ m-1 $,则进行“分裂”:取中间关键字上移至父节点,原节点以中间关键字为界拆分为两个子节点。若分裂传递至根节点且导致根满,则根分裂并生成新的根,树高加一。删除操作时,若关键字位于非叶节点,则用其中序后继替代并转为对叶节点的删除;若删除后节点关键字个数小于最小要求 $ \lceil m/2 \rceil - 1 $,则通过左兄弟或右兄弟“借”关键字,若兄弟也无法借用,则与兄弟及父节点中的分隔关键字合并,可能导致合并后的节点继续向上合并,甚至树高减一。

哈希表是一种基于映射关系的存储结构,其核心是哈希函数 $ H(key) $,它将任意关键字转换为地址空间内的索引值,从而实现快速存取。理想情况下查找时间复杂度为 $ O(1) $。但由于哈希函数输出空间有限,不同关键字可能映射到同一地址,产生冲突。常见的冲突解决方法包括链地址法(拉链法)和开放定址法(如线性探测、平方探测)。为减少冲突,应设计分布均匀的哈希函数,并保持较低的装载因子。
当B-树中某节点的关键字个数超过 $ m-1 $(即最大允许关键字数)时,需对该节点进行分裂操作,以维持B-树的结构特性。具体步骤如下:

  1. 确定分裂位置
    将该节点中的 $ m $ 个关键字按升序排列(插入后已有序),选取中间关键字(第 $ \lceil m/2 \rceil $ 个关键字,即索引为 $ \left\lfloor \frac{m}{2} \right\rfloor $ 的关键字)作为上移关键字。

  2. 拆分左右两部分

    • 中间关键字左侧的 $ \lceil m/2 \rceil - 1 $ 个关键字保留在原节点中;
    • 右侧的 $ \lfloor m/2 \rfloor $ 个关键字构成一个新节点;
    • 若该节点是非叶节点(有子树),则其 $ m+1 $ 棵子树也需一并分割:前 $ \lceil m/2 \rceil $ 棵子树归属原节点,后 $ \lfloor m/2 \rfloor + 1 $ 棵子树归属新节点。
  3. 中间关键字上移至父节点
    将选出的中间关键字插入到父节点中的合适位置,并将新节点的指针作为右子树连接到父节点中。若父节点因此也超过了 $ m-1 $ 个关键字,则递归执行分裂,直至根节点。

  4. 若根节点分裂
    当根节点发生分裂时,创建一个新的根节点,将上移的关键字作为新的根,原根分裂为两个子节点。此时树的高度增加一层。

⚠️ 注意:分裂操作保证了每个节点的关键字个数始终满足 $ \lceil m/2 \rceil - 1 \leq n \leq m-1 $,从而保持B-树的平衡性。

# 示例伪代码表示分裂过程(以m=5为例)defsplit_node(node):mid=len(node.keys)//2# m=5时,mid=2,第3个关键字上移separator=node.keys[mid]left_keys=node.keys[:mid]# 前半部分保留right_keys=node.keys[mid+1:]# 后半部分新建节点left_children=node.children[:mid+1]ifnotnode.is_leaf()elseNoneright_children=node.children[mid+1:]ifnotnode.is_leaf()elseNonenew_right_node=BTreeNode(keys=right_keys,children=right_children)# 更新当前节点node.keys=left_keys node.children=left_childrenreturnseparator,new_right_node

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

【C++ AIGC模型加载性能优化】:揭秘高效加载大模型的5大核心技术

第一章:C AIGC模型加载性能优化概述在AIGC(人工智能生成内容)应用中,C作为高性能后端开发的首选语言,承担着模型推理、资源调度与实时响应的关键职责。模型加载性能直接影响系统的启动速度与服务可用性,尤其…

作者头像 李华
网站建设 2026/5/16 3:47:28

如何快速部署腾讯HunyuanOCR-APP-WEB镜像并实现端到端OCR识别

如何快速部署腾讯HunyuanOCR-APP-WEB镜像并实现端到端OCR识别 在数字化转型浪潮席卷各行各业的今天,从纸质文档中高效提取结构化信息已成为企业自动化流程的关键一环。传统OCR系统虽然成熟,但往往依赖多个独立模型串联工作——先检测文字区域&#xff0…

作者头像 李华
网站建设 2026/5/21 21:42:47

Clang 17编译优化实战:5个关键步骤让你的构建效率翻倍

第一章:Clang 17编译优化的背景与价值现代C开发对性能、安全性和编译效率提出了更高要求,Clang 17作为LLVM项目的重要组成部分,在编译器优化领域实现了显著进步。其引入的新特性不仅提升了代码生成质量,还增强了开发者在调试、静态…

作者头像 李华
网站建设 2026/6/3 12:55:46

企业级文档处理首选:HunyuanOCR在金融票据识别中的表现

企业级文档处理首选:HunyuanOCR在金融票据识别中的表现 在银行后台处理成千上万张发票的深夜,一个财务人员正逐行核对金额、手动录入购方信息——这样的画面曾是金融行业日常的真实写照。如今,随着AI驱动的智能文档解析技术崛起,这…

作者头像 李华
网站建设 2026/6/10 11:15:08

小程序商城成为私域经营关键触点,智能化工具提升运营效率

在现阶段的电商生态里边,小程序商城已然变成了连接品牌跟消费者的关键数字触点。它是那种基于超级应用生态、不用下载安装的轻量级应用,靠着自身便捷的访问路径、 流畅的社交分享能力及高效的交易转化,为企业搭建生成了私域经营的基石。市面上…

作者头像 李华
网站建设 2026/6/6 8:59:25

微信小程序调用HunyuanOCR API 实现拍照识字功能

微信小程序调用HunyuanOCR API 实现拍照识字功能 在纸质文档仍广泛使用的今天,如何快速、准确地将图片中的文字“搬”到手机或电脑上,成了教育、办公乃至日常生活中高频出现的痛点。传统的OCR工具要么识别不准,尤其是面对复杂版式或混合语言时…

作者头像 李华