Chapter 5 查找

1-   顺序查找法 O(n)

2-   折半查找O(logn) :二分查找

要求:关键字有序

过程:

判定树:叶子结点为方框,代表不成功的结点。

3-   分块查找:索引顺序查找

ASL = ASL1+ASL2

4-   二叉排序树(BST)

特点:左<根<右

5-   平衡二叉树(AVL)

6-   B-树(B数)

特点:

1      分支数 = 关键字数 + 1,最大分支数就是B树的阶数

2      根结点至少有1个关键字,两个分支

其余结点至少有 个分支, -1个关键字

3      结点内关键字互不相等按从小到大顺序排列

4      叶结点处于同一层,是查找失败到达的位置(计算结点数时要算上)

5      下层结点的关键字取值在上层所划分区间内

基本操作:

1      查找:多路查找

2      插入:可能引起拆分,多次拆分叫连锁反应

3      删除:直接删,不够找兄弟借,再不够合并

7-   B+

      B-树和B+树的区别:(先B+,后B-)

1         B+树:n个关键字n个分支

B-树:n个关键字n+1个分支

2         关键字个数:  ≤n≤m      -1≤n≤m-1

根结点个数:  2≤n≤m          1≤n≤m-1

3         B+树:非叶子结点只是个索引,不包含关键字对应记录的存储地址

B-树:每个关键字对应一个记录的存储地址

B+树:叶子结点包含信息和全部关键字,叶子结点引出的指针指向记录

B+树:有一个指针指向关键字最小的叶子结点,所有叶子结点链接成一个线性链表

8-   散列表(哈希表)

H(key) ---- 哈希地址

发生冲突----同义词

Hi(key)----解决冲突后的地址

查找成功的ASL1 = 每个关键字的比较次数

查找失败的ASL2 = 由该地址开始到空地址为止进行比较操作的次数

常见Hash函数构造方法:除留取余法

常见解决冲突方法:

1        开放定址法:包括线性探查法等…

2        链地址法:

性能分析:α(装填因子) = 关键字个数/表长

Hash表的ASL与α有关,与关键字无关。

注:

1        顺序表查找优点是顺序/链式均可,缺点是n较大时,ASL大,效率低

2        折半查找适合顺序,不适合链式,且要求有序

Chapter 5 查找的更多相关文章

  1. Chapter 8(查找)

    1.二分查找和插值查找 //************************Search.h*********************************** #ifndef SEARCH_H # ...

  2. 【ASP.NET Identity系列教程(一)】ASP.NET Identity入门

    注:本文是[ASP.NET Identity系列教程]的第一篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序 ...

  3. ASP.NET Identity 一 (转载)

    来源:http://www.cnblogs.com/r01cn/p/5194257.html 注:本文是[ASP.NET Identity系列教程]的第一篇.本系列教程详细.完整.深入地介绍了微软的A ...

  4. ASP.NET Identity系列教程-2【Identity入门】

    https://www.cnblogs.com/r01cn/p/5177708.html13 Identity入门 Identity is a new API from Microsoft to ma ...

  5. Chapter 3: Connector(连接器)

    一.概述 Tomcat或者称之为Catalina(开发名称),可以简化为两个主要的模块,如下图: 多个Connector关联一个Container.之所以需要多个Connector,是为了处理多种协议 ...

  6. Chapter Schema

    Chapter Schema Schema是XF的核心,每一个读写方法都有一个相关联的Schema.方法首先解析Schema,然后再根据Schema的配置的执行. 那Schema是什么呢?Schema ...

  7. Chapter 1 Securing Your Server and Network(9):使用Kerberos用于身份验证

    原文:Chapter 1 Securing Your Server and Network(9):使用Kerberos用于身份验证 原文出处:http://blog.csdn.net/dba_huan ...

  8. Linux - 在当前系统内查找信息的方法

    查找文本 使用grep命令 grep命令 - 示例 grep命令 - 正则表达式 grep命令 - 统计匹配字符串的行数 grep命令 - 搜索多个单词 结合正则表达式使用grep命令 注意:在搜索指 ...

  9. 《Linux内核设计与实现》Chapter 18 读书笔记

    <Linux内核设计与实现>Chapter 18 读书笔记 一.准备开始 一个bug 一个藏匿bug的内核版本 知道这个bug最早出现在哪个内核版本中. 相关内核代码的知识和运气 想要成功 ...

随机推荐

  1. Android开发 如何最优的在Activity里释放资源

    前言 当前你已经入门Android开发,开始关注深入的问题,你就会碰到一个Android开发阶段经常碰到的问题,那就是内存泄漏. 其实大多数Android的内存泄漏都是因为activity里的资源释放 ...

  2. canvas像素的操作

    ###在canvas中的像素操作 到目前为止,我们尚未深入了解Canvas画布真实像素的原理,事实上, 你可以直接通过ImageData对象操纵像素数据,直接读取或将数据数组写入该对象中 ###得到场 ...

  3. Navicat Premium下载、安装、破解

    Navicat Premium 是一套数据库管理工具,让你以单一程序同時连接到 MySQL.MariaDB.SQL Server.SQLite.Oracle 和 PostgreSQL 数据库. 此外, ...

  4. Oracle闪回查询恢复delete删除数据

    Flashback query(闪回查询)原理 Oracle根据undo信息,利用undo数据,类似一致性读取方法,可以把表置于一个删除前的时间点(或SCN),从而将数据找回. Flashback q ...

  5. 一张图轻松掌握 Flink on YARN 应用启动全流程(上)

    Flink 支持 Standalone 独立部署和 YARN.Kubernetes.Mesos 等集群部署模式,其中 YARN 集群部署模式在国内的应用越来越广泛.Flink 社区将推出 Flink ...

  6. delphi判断MDI窗体的子窗体是否存在

    转]delphi判断MDI窗体的子窗体是否存在//*************************************************************************** ...

  7. 关于CTreeView中CTreeCtrl空间的使用

    昨天QQ群里有人问我怎么实现CTreeCtrl的功能,说实话,我也是一个VC 的初级学者,没有弄过CTreeView的代码,参考了MSDN后,写了一小段代码,和大家一起分享,其中包括窗口切分,都是比较 ...

  8. 什么是存根类 Stub

    转:http://www.cnblogs.com/cy163/archive/2009/08/04/1539077.html 存根类是一个类,它实现了一个接口,但是实现后的每个方法都是空的.      ...

  9. t检验中的t值和p值是什么关系_t检验和p值的关系

    t检验中的t值和p值是什么关系_t检验和p值的关系 t检验中通过样本均值 总体均值 样本标准差 样本量 可以计算出一个t值,这个t值和p值有什么关系? 根据界值表又会查出一个数,这个数和t值比较,得出 ...

  10. P1030 求先序排列 /// 二叉树的遍历

    题目大意: 给一棵树的中序排列 后序排列,求这棵树的先序排列 https://www.luogu.org/problemnew/show/P1030 二叉树的四种遍历解说 几种遍历的递归实现 后序排列 ...