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

红安县建设局网站江苏无锡今天的最新发布消息

红安县建设局网站,江苏无锡今天的最新发布消息,关于京东商城网站建设的实践报告,高端的网站设计公司1. B树 1.1 定义 B树是一种多路平衡查找树,具有以下性质: 每个节点最多包含 m 个子节点(m 阶 B树)。 根节点至少有两个子节点(除非它是叶子节点)。 每个内部节点(非根和非叶子节点&#xff…

1. B树

1.1 定义

B树是一种多路平衡查找树,具有以下性质:

  1. 每个节点最多包含 m 个子节点(m 阶 B树)。

  2. 根节点至少有两个子节点(除非它是叶子节点)。

  3. 每个内部节点(非根和非叶子节点)至少有 ⌈m/2⌉ 个子节点。

  4. 所有叶子节点位于同一层。

  5. 每个节点包含多个关键字,且关键字按升序排列。

1.2 操作

查找
  • 从根节点开始,逐层比较关键字,找到目标值或确定目标值不存在。

插入
  1. 找到插入位置。

  2. 如果节点未满,直接插入。

  3. 如果节点已满,进行节点分裂:

    • 将中间关键字提升到父节点。

    • 分裂后的两个节点分别包含较小和较大的关键字。

删除
  1. 找到目标关键字。

  2. 如果关键字在叶子节点,直接删除。

  3. 如果关键字在内部节点,用后继关键字替换,然后删除后继关键字。

  4. 如果删除后节点关键字数少于 ⌈m/2⌉−1,需要进行合并或借用操作。

1.3 代码示例(伪代码)


class BTreeNode:def __init__(self, leaf=False):self.leaf = leafself.keys = []self.children = []class BTree:def __init__(self, t):self.root = BTreeNode(True)self.t = t  # 最小度数def search(self, k, x=None):if x is not None:i = 0while i < len(x.keys) and k > x.keys[i]:i += 1if i < len(x.keys) and k == x.keys[i]:return (x, i)elif x.leaf:return Noneelse:return self.search(k, x.children[i])else:return self.search(k, self.root)def insert(self, k):root = self.rootif len(root.keys) == (2 * self.t) - 1:temp = BTreeNode()self.root = temptemp.children.insert(0, root)self.split_child(temp, 0)self.insert_non_full(temp, k)else:self.insert_non_full(root, k)def insert_non_full(self, x, k):i = len(x.keys) - 1if x.leaf:x.keys.append(None)while i >= 0 and k < x.keys[i]:x.keys[i + 1] = x.keys[i]i -= 1x.keys[i + 1] = kelse:while i >= 0 and k < x.keys[i]:i -= 1i += 1if len(x.children[i].keys) == (2 * self.t) - 1:self.split_child(x, i)if k > x.keys[i]:i += 1self.insert_non_full(x.children[i], k)def split_child(self, x, i):t = self.ty = x.children[i]z = BTreeNode(y.leaf)x.children.insert(i + 1, z)x.keys.insert(i, y.keys[t - 1])z.keys = y.keys[t: (2 * t) - 1]y.keys = y.keys[0: t - 1]if not y.leaf:z.children = y.children[t: 2 * t]y.children = y.children[0: t - 1]
 

2. B+树

2.1 定义

B+树是 B树的一种变体,具有以下性质:

  1. 内部节点只存储关键字,不存储数据。

  2. 所有数据都存储在叶子节点中。

  3. 叶子节点通过指针连接,形成一个有序链表。

2.2 操作

查找
  • 从根节点开始,逐层比较关键字,直到找到目标叶子节点。

插入
  1. 找到插入位置。

  2. 如果叶子节点未满,直接插入。

  3. 如果叶子节点已满,进行节点分裂:

    • 将中间关键字提升到父节点。

    • 分裂后的两个叶子节点分别包含较小和较大的关键字。

删除
  1. 找到目标关键字。

  2. 从叶子节点中删除关键字。

  3. 如果删除后节点关键字数少于 ⌈m/2⌉,需要进行合并或借用操作。

2.3 代码示例(伪代码)

class BPlusTreeNode:def __init__(self, leaf=False):self.leaf = leafself.keys = []self.children = []self.next = None  # 指向下一个叶子节点class BPlusTree:def __init__(self, t):self.root = BPlusTreeNode(True)self.t = t  # 最小度数def search(self, k, x=None):if x is not None:i = 0while i < len(x.keys) and k > x.keys[i]:i += 1if x.leaf:if i < len(x.keys) and k == x.keys[i]:return xelse:return Noneelse:return self.search(k, x.children[i])else:return self.search(k, self.root)def insert(self, k):root = self.rootif len(root.keys) == (2 * self.t) - 1:temp = BPlusTreeNode()self.root = temptemp.children.insert(0, root)self.split_child(temp, 0)self.insert_non_full(temp, k)else:self.insert_non_full(root, k)def insert_non_full(self, x, k):i = len(x.keys) - 1if x.leaf:x.keys.append(None)while i >= 0 and k < x.keys[i]:x.keys[i + 1] = x.keys[i]i -= 1x.keys[i + 1] = kelse:while i >= 0 and k < x.keys[i]:i -= 1i += 1if len(x.children[i].keys) == (2 * self.t) - 1:self.split_child(x, i)if k > x.keys[i]:i += 1self.insert_non_full(x.children[i], k)def split_child(self, x, i):t = self.ty = x.children[i]z = BPlusTreeNode(y.leaf)x.children.insert(i + 1, z)x.keys.insert(i, y.keys[t - 1])z.keys = y.keys[t: (2 * t) - 1]y.keys = y.keys[0: t - 1]if not y.leaf:z.children = y.children[t: 2 * t]y.children = y.children[0: t - 1]else:z.next = y.nexty.next = z
 

3. B树与 B+树的比较

特性B树B+树
数据存储内部节点和叶子节点都存储数据只有叶子节点存储数据
叶子节点连接通过指针连接成有序链表
查找性能适用于随机查找适用于范围查找
磁盘 I/O较高较低

文章转载自:

http://DyckM4id.mnjyf.cn
http://nfEImi5d.mnjyf.cn
http://oTAHZX3q.mnjyf.cn
http://bsiIrkQf.mnjyf.cn
http://Sh1Qf7xQ.mnjyf.cn
http://4gE3GlvE.mnjyf.cn
http://M7RkFuRd.mnjyf.cn
http://mnWG87Cq.mnjyf.cn
http://SBVeEv4K.mnjyf.cn
http://aryGP8EP.mnjyf.cn
http://vfBfXjc1.mnjyf.cn
http://O3kBiZvU.mnjyf.cn
http://zbDjZB71.mnjyf.cn
http://8dDnpu8V.mnjyf.cn
http://i2igKC5N.mnjyf.cn
http://z2fdiAUE.mnjyf.cn
http://CRfPItg5.mnjyf.cn
http://eTbGdaih.mnjyf.cn
http://1gjuM8HF.mnjyf.cn
http://XvNJOvwl.mnjyf.cn
http://FbDbwj0f.mnjyf.cn
http://W5Fd9lBF.mnjyf.cn
http://2jl0UoUx.mnjyf.cn
http://shSv9OVe.mnjyf.cn
http://7cB5PYyr.mnjyf.cn
http://1HhtJnSo.mnjyf.cn
http://dO5i2KnU.mnjyf.cn
http://317bDejT.mnjyf.cn
http://CMxZMf8r.mnjyf.cn
http://QIdEiwR9.mnjyf.cn
http://www.dtcms.com/wzjs/739909.html

相关文章:

  • 云南网站备案查询凡科互动小游戏
  • 学校网站建设设计方案网站如何推广行业
  • 成都网站建设是什么意思为什么大家用wordpress建网站
  • 网站增加keywords关键词有影响吗做网站需要什么技术人员
  • 中国建设执业资格注册中心网站wordpress 换主题
  • 网站开发人员工资计入无形资产找项目网
  • 郑州学校网站建设教育视频培训网站建设
  • iis5.1怎么新建网站如何用VS2017做网站
  • 西安优化网站公司wordpress themes 目录
  • 垂直门户网站的盈利模式探讨网站开发有哪些软件有哪些
  • 经营范围 网站建设seo网页优化平台
  • 中国建设网站用户名网站群建设路径
  • 做网站广告有哪些职位进入官方网站
  • 网站设计市场价广州黄埔建网站
  • 百事通网做网站苏州网站搜索排名
  • 如何做网站视频响应式网站切图
  • 提高企业网站的访问率域名到期了网站会打不开吗
  • 无水印视频素材下载免费网站自动写作文网站
  • 湖南郴州建设局网站求网站懂的说下开车
  • 邯郸建设企业网站佛山企业网站建设公司
  • 网站开发技术 报告郑州高端建站
  • 安徽飞亚建设网站做外掛网站空间
  • 网站建设的基础是什么意思优芽动画制作官网
  • 铜仁北京网站建设几级英语可以做外贸网站seo
  • 怎样上传wordpress模板长沙优化网站多少钱
  • 怎样做网站宣传承德建设局网站
  • 泰安放心的企业建站公司视频制作软件推荐
  • 东山县城乡规划建设局网站做网站一般把宽度做多少
  • 企业网站seo关键词优化排名思路wordpress搜索页分类
  • 西安网站开发方案专业网站设计公司有哪些