有序表的索引顺序结构查找次数分析

@(算法学习)

为了提高查找效率,对65025个元素的有序顺序表建立索引顺序结构,在最好情况下查找到表中已有元素,平均需要执行(B)次关键字比较。
A. 10
B. 14
C. 20
D. 21

分析:明确一个概念:索引顺序结构就是分块结构。综合了顺序查找和折半查找的优点

分析一下这种存储结构下查找的策略。分块查找的思路是:将查找表分为若干子块,块内元素可以无序,但是块之间有序,将每个块中的最值抽出来建立一个索引表。索引表存储的是每个块的最值和地址,关键字有序。因此可以对其进行折半查找加快速度。

再思考一般情况下折半查找平均查找长度。

折半查找树是一棵平衡树。
设为满的平衡树。高度为h,根结点高度是1.则每层最多结点是2h−12^{h-1}2h−1.

ASL=1n(1×1+2×2+...+h×2h−1)=1n((h−1)2h+1)ASL = \frac{1}{n}(1\times1+2\times2+...+h\times2^{h-1}) \\ = \frac{1}{n}\big((h-1)2^h+1\big) ASL=n1​(1×1+2×2+...+h×2h−1)=n1​((h−1)2h+1)

树高h=⌈log2(n+1)⌉h =\lceil log_2 (n+1)\rceilh=⌈log2​(n+1)⌉

所以:

ASL≈log2(n+1)−1ASL \approx log_2(n+1)-1 ASL≈log2​(n+1)−1

由这个公式可以推导上面的问题了。

将65025个关键字分组:65025=255\sqrt{ 65025 } = 25565025​=255

即分为255块,每块255个元素时,将会有最小的平均查找次数。

总查找次数为:

ASL=log2(255+1)−1+log2(255+1)−1=14.ASL = log_2(255+1) - 1 + log_2(255+1) - 1 = 14. ASL=log2​(255+1)−1+log2​(255+1)−1=14.

2019.10 Update:

第一届PAT算法直播课培训班招募帖,欢迎点击查看详情、

END.

有序表的索引顺序结构查找次数分析相关推荐

  1. SQL Server 表和索引存储结构

    SQL Server 表和索引存储结构 杜飞 在上一篇文章中,我们介绍了SQL Server数据文件的页面类型,系统通过96个字节的头部信息和系统表从逻辑层面上将表的存储结构管理起来,具体到表的存储结 ...

  2. B-Tree/B+-Tree/二叉树/红黑树/Hash表/MySQL底层到底用哪个数据表建立索引做快速查找?

    B-Tree/B+-Tree/二叉树/红黑树/Hash表/MySQL底层到底用哪个数据表建立索引做快速查找? ~~B-Tree~~ ==B+Tree== ~~二叉树(Binary Search Tre ...

  3. 折半查找的平均查找次数分析

    前面我们讨论过在有序顺序表的查找树中,是最不平衡树,关键字有n个,则查找失败的结点有n+1个.把这个一般化,性质不变,也即:查找失败结点仍然是n+1个.这个性质在B树部分也是成立的,不做严格推导,只引 ...

  4. 查找——索引顺序表和倒排表

    查找 8.3 索引顺序表和倒排表 8.3.1 索引顺序表 (1)完全索引 (2)二级索引 结论 8.3.2 倒排表 (1)链式倒排索引表 (2)单元倒排索引表 特点 8.3 索引顺序表和倒排表 当数据 ...

  5. 索引顺序表(分块)查找分析

    索引顺序表(分块)查找 一.分块查找表存储结构 1."分块有序"的线性表 2.索引表 二.分块查找的基本思想 三.分块查找示例 四.算法分析--平均查找长度ASL 索引顺序查找又称 ...

  6. 顺序查找、折半查找及索引顺序查找

    静态查找表 只做查询的操作的查找表 动态查找表: 若在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素 顺序查找: 从开头一个个比较,直到查找到关键字或者到达末尾 平 ...

  7. 5.顺序表和链表的最值,逆置和归并有序表

    文章目录 一.顺序表和链表的数据结构. 二.最值 2.1 使用顺序表 2.2 使用链表 三.逆置 3.1 顺序表的逆置 3.2 链表的逆置 四.归并(前提:有序的表) 4.1 顺序表实现归并有序表 4 ...

  8. sql server 索引阐述系列二 索引存储结构

    "流光容易把人抛,红了樱桃,绿了芭蕉" 转眼又年中了,感叹生命的有限,知识的无限.在后续讨论索引之前,先来了解下索引和表数据的内部结构,这一节将介绍页的存储,页分配单元类型,区的存 ...

  9. C语言顺序结构程序设计PPT,C语言习题集与实验指导 教学课件 伍鹏、杜红、王圆妹、邓绍金 第3章 顺序结构程序设计.pdf...

    [摘要]第3章 顺序结构程序设计 第3章 顺序结构程序设计 当你对C语言程序设计有了一定了解和掌握后, 在处理一些简单的任务时,若想根据程序书写的过程 顺序执行程序,这时应该如何处理呢? •顺序结构 ...

最新文章

  1. 第十八章 20结构体与string
  2. sdut 3363 驴友计划
  3. SQL Editor and reconnect【mysql(workbench)更新数据时候的一个异常】【Error Code:1175】
  4. 神器 JMH + Arthas 性能监控
  5. 查看占用指定端口的程序
  6. Oracle 12C DataGuard部署以及维护
  7. powershell 停止正在运行的用户应用
  8. jquery版瀑布流
  9. 向linux内核提交了第一个patch,在3.8中发布,庆祝一下!
  10. 计算机电源线税务编码,电力电子元器件税收分类编码
  11. 区块链--大白话说明
  12. 电脑主板元件判断方法
  13. 一级b仅html格式保存,一级B考试模拟试题-第一套,DOS版本:6.0
  14. JMeter参数大小写转换
  15. 论文翻译 —— Model Free Episodic Control
  16. C#之:线程同步 Monitor类
  17. Java运算符的优先级和C语言中有何异同,C语言运算符优先级小结
  18. 上极限与上确界有什么区别
  19. 生活不只有BAT,还有这些市值超1000亿的快消公司
  20. 下载Mysql-connector-java驱动包

热门文章

  1. RobotStudio碰撞检测的设定
  2. (十六)K-Means聚类
  3. 请领导批阅文件怎么说_有请考过的说物业经理资格证怎么考?
  4. 网易云api接口_网易云音乐你喜欢吗?你自己也可以做一个
  5. 动手组装深度学习机器+RTX2070Super
  6. Python Excel到JSON的转换
  7. java8foreach_Java forEach – Java 8 forEach
  8. kotlin 运算符_Kotlin属性,数据类型,运算符
  9. android 约束 布局_Android约束布局动画
  10. Java StringBuilder