动态m路搜索树即系统运行时可以动态调整保持较高搜索效率的最多m路的搜索树。
以3路搜索树为例说明其关键码排序关系:
 
const int MaxValue=;
template <class T>
struct MtreeNode:public Mtree{
int n; //关键码个数
MtreeNode<T> *parent;
T key[m+]; //key[m]为监视哨兼单元,key[0]未使用
MtreeNode<T> *ptr[m+]; //子树结点指针数组,ptr[m]在插入溢出时使用
int *recptr[m+]; //每个索引项中指向数据区相应记录起始地址的指针
}; template <class T>
struct Triple{ //搜索结果三元组定义
MtreeNode<T> *r;
int i; //结点中关键码序号
int tag; //tag为0表示搜索成功,为1表示搜索失败
}; template <class T>
class Mtree{
protected:
MtreeNode<T> *root;
const int m; //最大子树个数,等于树的度
public:
Triple<T> Search(const T&x);
}; template <class T>
Triple<T> Mtree<T>::Search(const T& x){
Triple result; //记录搜索结果三元组
GetNode(root); //从磁盘上读取位于根root的结点
MtreeNode<T> *p=root,*q=NULL; //p是扫描指针,q用来记录p的父结点指针
int i=;
while(p!=NULL){
p->key[(p->n)+]=MaxValue;
while(p->key[i+]<x) i++; //在结点内顺序搜索
if(p->key[i+]==x){
result.r=p;result.i=i+;result.tag=; //返回结果
return result;
}
q=p;p=p->ptr[i]; //本结点无x,q记录当前结点,p下降到相应子树
GetNode(p); //从磁盘读取p结点
}
result.r=q;
result.i=i+;
result.tag=;
return result; //搜索失败,返回插入位置
}

算法-搜索(5)m路搜索树的更多相关文章

  1. 算法-搜索(6)B树

    B树是平衡的m路搜索树. 根结点至少两个子女,根结点以外的非失败结点至少⌈m/2⌉个子女,所有失败结点都在h+1层. 第h层至少2⌈m/2⌉h-1个结点,因此失败结点数n+1≥2⌈m/2⌉h-1个. ...

  2. 【程序员的吃鸡大法】利用OCR文字识别+百度算法搜索,玩转冲顶大会、百万英雄、芝士超人等答题赢奖金游戏

    [先上一张效果图]: 一.原理: 其实原理很简单: 1.手机投屏到电脑: 2.截取投屏画面的题目部分,进行识别,得到题目和三个答案: 3.将答案按照一定的算法,进行搜索,得出推荐答案: 4.添加了一些 ...

  3. 利用OCR文字识别+百度算法搜索,玩转冲顶大会、百万英雄、芝士超人等答题赢奖金游戏

    [先上一张效果图]: 一.原理: 其实原理很简单: 1.手机投屏到电脑: 2.截取投屏画面的题目部分,进行识别,得到题目和三个答案: 3.将答案按照一定的算法,进行搜索,得出推荐答案: 4.添加了一些 ...

  4. 0算法基础学算法 搜索篇第二讲 BFS广度优先搜索的思想

    dfs前置知识: 递归链接:0基础算法基础学算法 第六弹 递归 - 球君 - 博客园 (cnblogs.com) dfs深度优先搜索:0基础学算法 搜索篇第一讲 深度优先搜索 - 球君 - 博客园 ( ...

  5. 看动画学算法之:平衡二叉搜索树AVL Tree

    目录 简介 AVL的特性 AVL的构建 AVL的搜索 AVL的插入 AVL的删除 简介 平衡二叉搜索树是一种特殊的二叉搜索树.为什么会有平衡二叉搜索树呢? 考虑一下二叉搜索树的特殊情况,如果一个二叉搜 ...

  6. 路径规划: PRM 路径规划算法 (Probabilistic Roadmaps 随机路标图)

    随机路标图-Probabilistic Roadmaps (路径规划算法) 路径规划作为机器人完成各种任务的基础,一直是研究的热点.研究人员提出了许多规划方法如: 1. A* 2. Djstar 3. ...

  7. Java与算法之(13) - 二叉搜索树

    查找是指在一批记录中找出满足指定条件的某一记录的过程,例如在数组{ 8, 4, 12, 2, 6, 10, 14, 1, 3, 5, 7, 9, 11, 13, 15 }中查找数字15,实现代码很简单 ...

  8. 算法-搜索(3)AVL树

    AVL树高度平衡的二叉搜索树,任一点的平衡印章只能是+1.-1.0,从而尽量降低树的高度. 如果它有n个结点,高度可保持在O(log2n),平均搜索长度也可保持在O(log2n). (1)AVL树的插 ...

  9. hash算法搜索获得api函数地址的实现,"kernel32.dll", "CreateThread"

    我们一般要获得一个函数的地址,通常采用的是明文,例如定义一个api函数字符串"MessageBoxA",然后在GetProcAddress函数中一个字节一个字节进行比较.这样弊端很 ...

随机推荐

  1. jmeter跨线程组session保持

    @@@@@@@@@@@@@@@ 是金子早晚会被挖光的 http请求由于无状态的特性,所以在请求时需要带上身份信息,关于session和cookie的验证机制会在其他笔记中再记录,这里不讨论. 心路历程 ...

  2. cpp求职

    //Created by Arc on 2020/5/23 //////// Created by snnnow on 2020/5/20.//////面向对象的程序设计-期中测试// 根据题目实现求 ...

  3. PHP array_diff_key() 函数

    实例 比较两个数组的键名,并返回差集: <?php $a1=array("a"=>"red","b"=>"gre ...

  4. Python os.dup() 方法

    概述 os.dup() 方法用于复制文件描述符 fd.高佣联盟 www.cgewang.com 语法 dup()方法语法格式如下: os.dup(fd); 参数 fd -- 文件描述符 返回值 返回复 ...

  5. 5.21 省选模拟赛 luogu P4297 [NOI2006]网络收费 树形dp

    LINK:网络收费 还是自己没脑子. 早上思考的时候 发现树形dp不可做 然后放弃治疗了. 没有合理的转换问题的模型是我整个人最大的败笔. 暴力也值得一提 爆搜之后可以写成FFT的形式的计算贡献的方法 ...

  6. C++ 中可调用的且有函数功能的东东

    第一个:函数     其实函数在声明的时候都有个名字: 这个名字可以看作是是指针,将其直接赋值给函数指针 也可以看作是可取指的对其& 再赋值给函数指针 第二个:函数指针   通过其被赋值的方式 ...

  7. heap相关算法的简单实现

    // 12:06 PM/09/28/2017 #pragma once //向下调整算法 主要用来make_heap 以及pop_heap inline void adjustDown(int* he ...

  8. 使用pytorch快速搭建神经网络实现二分类任务(包含示例)

    使用pytorch快速搭建神经网络实现二分类任务(包含示例) Introduce 上一篇学习笔记介绍了不使用pytorch包装好的神经网络框架实现logistic回归模型,并且根据autograd实现 ...

  9. SpringCloud系列之API网关(Gateway)服务Zuul

    1.什么是API网关 API网关是所有请求的入口,承载了所有的流量,API Gateway是一个门户一样,也可以说是进入系统的唯一节点.这跟面向对象设计模式中的Facet模式很像.API Gatewa ...

  10. Jenkins持续集成(上)-Windows下安装Jenkins

    环境:Windows 2008 R2.Jenkins2.235.1: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成SLB.配置管理.Jenkins)> ...