查找:分块查找算法分析

news2024/7/30 9:26:18

数据分块存储,分块查找特点:块内无序、块间有序。

1.分块查找的算法思想

在这里插入图片描述

1.使用顺序查找查索引

设置一个索引表,
索引表数据结构设计:

//索引表
typedef struct {
    ElemType maxValue;
    int low,high;
}Index;

//顺序表存储实际元素
ElemType List[100] ;

分块查找,又称索引顺序查找,算法过程如下:

  1. “索引表”中保存每个分块的最大关键字和分块的存储区间。
  2. 在索引表中确定待查记录所属的分块(可顺序、可折半)
  3. 再在分块内进行顺序查找

2.使用折半查找查索引

  • 若索引表中不包含目标关键字,则折半查找索引表最终停在low>high,要在low所指分块中查找
  • 原因:最终low左边一定小于目标关键字,high右边一定大于目标关键字。而分块存储的索引表中保存的是各个分块的最大关键字。

2.查找效率分析(ASL)

ASL=查索引表的平均查找长度+查分块的平均查找长度

在这里插入图片描述
假设,长度为n的查找表被均匀地分为b块,每块s个元素。则 n = s b n = sb n=sb

设索引查找和块内查找的平均查找长度分别为L1、Ls,则分块查找的平均查找长度为 A S L = L 1 + L s ASL=L1+Ls ASL=L1+Ls

1.采用顺序查找查索引表

则索引查找的长度为: L 1 = b + 1 2 L1 = \frac{b+1}{2} L1=2b+1块内查找长度为: L s = s + 1 2 Ls = \frac{s+1}{2} Ls=2s+1则分块查找的平均查找长度为: A S L = s 2 + 2 s + n 2 s ASL = \frac{s^2+2s+n}{2s} ASL=2ss2+2s+n

当s = n \sqrt{n} n 时,ASL最小为: n + 1 \sqrt{n}+1 n +1.

2.折半查找查索引表

L 1 = l o g 2 ( b + 1 ) L1 =log_2(b+1) L1=log2(b+1), L s = s + 1 2 Ls =\frac{s+1}{2} Ls=2s+1, A S L = [ l o g 2 ( b + 1 ) ] + s + 1 2 ASL =[log_2(b+1)] + \frac{s+1}{2} ASL=[log2(b+1)]+2s+1

若查找表是“动态查找表”,则采用链式存储存放元素。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1006125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

圆的反演 hdu 4773

欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击。 题目大意 http://acm.hdu.edu.cn/showproblem.php?pid4773 给定2个不相交的圆以及圆外1点P。求过P并且与另两个圆相切(外切)的圆&#xff0c…

使用TortoiseGit导出两次提交时间之间的差异文件

同时选择两个提交时间,右键后点击Compare revisions 多选需要导出的待发布的文件,然后右键点击Export selection to... 在弹窗中选择文件夹(导出待发布的文件) 导出效果(目录) 导出效果(文件&am…

MGR新节点RECOVERING状态的分析与解决:caching_sha2_password验证插件的影响

起因 在GreatSQL社区上有一位用户提出了“手工构建MGR碰到的次节点一直处于recovering状态”,经过排查后,发现了是因为新密码验证插件caching_sha2_password导致的从节点一直无法连接主节点,帖子地址:(https://greatsql.cn/threa…

基于Android系统图书管理系统

摘要 随着移动终端使用率的快速增加,Android智能产品已日益成为越来越多的人们选择的移动终端产品。伴随着Android智能手机与平板电脑已经在我们生活大量的使用,越来越多的基于Android开发平台的应用也随之产生。 便捷的图书检索和借阅:用户可…

Java“牵手”京东商品列表页数据采集+商品价格数据排序,商品销量排序数据,京东商品API采集方法

京东商品列表API是京东平台提供给开发者的应用程序编程接口,通过API可以获取京东平台上商品列表数据。 京东商品列表API可以提供多种不同的推荐商品列表API接口,开发者可以根据自己的需求选择适合自己的接口。其中,最常用的是基于用户反馈的…

项目经理如何做好跨部门的沟通与协作?

对项目经理来说沟通不良,会对项目造成严重影响,跨部门沟通更是项目管理中的难题。原本应该合作解决的问题,到了跨部门会议上,又各说各话,找不到共识。 在不同部门各有不同立场与利益的情况下,怎样才能把话…

Open Interpreter:OpenAI Code Interpreter的开源实现|本地化|可联网

如果你对这篇文章感兴趣,而且你想要了解更多关于AI领域的实战技巧,可以关注「技术狂潮AI」公众号。在这里,你可以看到最新最热的AIGC领域的干货文章和案例实战教程。 一、前言 今年7月,OpenAI发布了一个强大的插件,名…

什么是第三方软件测试?

测试机构 什么是软件测试? 软件测试是一个验证和验证应用程序功能以确定它是否满足要求的过程。这是在应用程序中发现缺陷并根据*终用户的要求检查应用程序功能的过程。 第三方软件检测机构是专门提供软件测试服务,其出具软件测试报告过程中可能运用到…

Object.keys和Object.values

Object.keys list:[],obj:{数据泄露: 5412, 数据传输: 3921, 数据篡改: 851392, 数据滥用: 59532 },//返回可枚举的属性数组console.log(Object.keys(this.obj)) // [数据泄露, 数据传输, 数据篡改, 数据滥用]Object.keys(this.obj).map(key>{this.list.push({title:key,val…

Java工作流系统,快速实现业务审批(源码)

前言 activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,请假审批demo从流程绘制到审批结束实例。 一、项目形式 springbootvueactiviti集成了activiti在线编辑器,流行的前后端分离部署开发模式,快速开发平…

700亿参数Llama 2训练加速195%!数据成为其提升效果的关键要素

Llama 2是Meta AI正式发布的最新一代开源大模型,达到了2万亿的token。精调Chat模型是在100万人类标注数据上训练。Llama 2在包括推理、编码、精通性和知识测试等许多外部基准测试中都优于其他开源语言模型。 Llama 2开启了全球范围内AI大型模型的共享新篇章。它包括…

第5章_freeRTOS入门与工程实践之模块使用说明与STM32CubeMX配置

本教程基于韦东山百问网出的 DShanMCU-F103开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id724601559592 配套资料获取:https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103 freeRTOS系列教程之freeRTOS入…

进销存仓库管理系统有哪些?哪些适合商户用?

进销存仓库管理系统可以帮助商家实现准确的库存控制、优化采购和销售活动,提升仓库操作效率,并提供数据分析和决策支持,从而解决企业在库存管理和供应链方面的问题,提升整体运营效率和竞争力。 进销存仓库管理系统有哪些&#xf…

SmartSQL 一款开源的数据库文档管理工具

建议直接蓝奏云下载安装 蓝奏云下载:https://wwoc.lanzoum.com/b04dpvcxe 蓝奏云密码:123 项目介绍 SmartSQL 是一款方便、快捷的数据库文档查询、导出工具!从最初仅支持 数据库、CHM文档格式开始,通过不断地探索开发、集思广…

LVGL(72)-v8--滑块slider

一、slider 简介 1.1 概述 Overview Slider对象看起来像一个带有旋钮的工具条。可以拖动该旋钮来设置一个值。滑块也可以是垂直的或水平的。滑动条在前面我们介绍img控件的时候有个历程有使用到,哪里我们讲述设置样式实现对滑动条的一些样式的设置。 1.2 部分和风…

如果是你,会不会修改这段代码?

最近在合流一些功能&#xff0c;然后有一部分功能的代码需要重构。 需要重构的代码如下&#xff0c;没有重构之前是可以正确执行的。 unsigned int Hex2Int (char c) {if (c > 0 && c < 9) {return (unsigned int) (c - 0);} else {return (unsigned int)(c - a1…

excel 单元格内多行文本的行数量统计

excel公式&#xff1a; LEN(H2)-LEN(SUBSTITUTE(H2,CHAR(10),))1

js中如何获取当前页面的URL参数值?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 获取当前页面的URL参数值⭐ 解析查询字符串⭐ 使用正则表达式解析参数值⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&am…

Clion的使用和配置

工欲善其事必先利其器&#xff0c;开发C好用的IDE必须要配置好&#xff0c;下面我们简单介绍一下现代化的编译工具Clion Clion安装 Ubuntu 一般来说在官网下载好后&#xff0c;解压到文件夹会有一个Install-Linux-tar.txt&#xff0c;按照这个教程安装就行 Clion配置 增加…

stable diffused快速入门

一、下载安装 1&#xff0c;网盘n519 2&#xff0c;环境依赖和模型整合包必须下载&#xff0c;各种风格的模型可选 3&#xff0c;解压模型整合包 4&#xff0c;双击启动器运行依赖这个可执行文件&#xff0c;安装一些环境&#xff0c;直接下一步即可 二、启动 1&#xff0…