分块查找算法思路、示例和实现

2023-11-19

分块查找

索引表 | 22 | 44 | 74 |
数组 | 22 12 13 9 8 | 33 42 44 38 24 | 48 60 58 74 47 |

算法步骤

  1. 通过索引表线性查找确定在数组的哪一“块”
  2. 通过数组里所在“块”的线性查找确定是否存在、在哪个位置

算法代码

Keytype  k; // 关键字
int blocks; // 整个索引表的长度
int last; // 整个数组的长度 last = blocks * L
index ix LIST  F ;
int L ;
Int   index_search(  k,  last, blocks, ix,  F,L  )
{
	int  i, j ; // i是索引表坐标,j是数组每块的坐标
	i = 0; // 第一位索引表
	while (( ix[i] < k) 	&&   (i < blocks) )  i++  ;
		// 当前查找值小于目标值 且  查找的坐标在索引表范围内
	if ( i < blocks ) { // i在范围内则说明上一行代码有查找到,不在范围内则没查找到
		j = i*L; // 每块长度为L,要在第i块内查找,数组内的坐标j为i×L
		while (( k != F[j].key ) && (j <= (i+1)*L-1 ) && (j < last))
			// 当前查找值目标值不同 且  坐标j在范围内   且 j在整个数组范围内(防止查找最后一“块”时越界)
			j = j + 1; // 查找块内的下一个查找元素
		if ( k == F[ j ].key )  return j ; // 若查找到则返回下标
		/* 	执行这条语句,有可能是:
			1. 上一个while的第一个条件不满足(即查找成功!)
			2. 第二/三个条件不满足(即越界≈无目标值,查找失败
		*/
	}
	return1 ; // 查找失败
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分块查找算法思路、示例和实现 的相关文章

随机推荐

  • 使用MicroPython开发ESP32(02):库介绍

    文章目录 目的 库基础说明 库列表 Python基础库 嵌入式设备相关库 ESP32特有库 总结 目的 对于Python来说丰富的库是其使用快速简易的关键 这点对于MicroPython也一样 这篇文章就对MicroPython的库做个罗列
  • Python-模块与包(通俗易懂)

    1 模块 1 模块的理解 模块就是一个包含了Python定义和声明的 py 文件 python导入模块默认是从当前目录当前文件查找模块 注意 自定义的python文件的文件名一定不要和已有模块名冲突 定义一个hello py文件 我们可以在
  • 14个SpringBoot优化小妙招,看完后同事说写代码像写诗!

    大家好 我是东哥 每次聊到代码优化 都会有很多人说理论 架构 核心思路 其实我觉得代码优化这事说简单了很简单 说复杂了吧它也有一定的难度 但是我觉得有一个良好的编码习惯很重要 下面分享一下14个springboot项目中优化代码的小技巧 让
  • Python - 我写代码时如果有一行过长该怎么处理?

    Python的编码规范要求每行的长度不超过80 那就就有一个问题 如果我真的需要在一行写80个字符以上的代码怎么办 Python语句都可以很简单的实现把一行分为多行 比如下面这两种写法是等价的 l 1 2 3 4 5 6 l 1 2 3 4
  • 逻辑电平及其相关知识的学习

    最近开始学习通信方面的知识 以问题的形式学习 也以问题的方式展示在这里 由于现在也没有具体的目标 学习深度随缘 任何一个知识点要深究都是一门学科 欢迎批评指正交流 目录 什么是逻辑电平 CMOS是什么意思 TTL是什么意思 逻辑电平的5个基
  • Angular4.0_页面搭建

    开发页面布局 app component hrml
  • 系统架构设计师之软件架构风格

    系统架构设计师之软件架构风格
  • C# Math.Round()四舍五入、四舍六入五成双

    开发者为了实现小数点后 2 位的四舍五入 编写了如下代码 var num Math Round 12 125 2 代码非常的简单 开发者实际得到的结果是12 12 这与其所预期的四舍五入结果12 13相悖 其实产生这个结果的原因是由于Mat
  • 什么是 T-Kernel

    本文译至 http www t engine org what is t kernel 什么 T Kernel T Kernel 实时操作系统是由T Engine论坛开发的用以满足下一代普适计算环境设备性能要求的OS T Engine 是一
  • web designer设计器编译问题

    web designer设计器编译问题 下载地址 https github com xiaoai7904 web designer 开发工具 Visual Studio Code 执行npm install 初次安装编译过程中会出现 dll
  • word工具栏菜单栏隐藏打开的办法

    windows中打开 开始 运行 键入 winword a 然后 确定 即可恢复默认工具栏 重新打开文档
  • [基本功]辛普森悖论

    辛普森悖论是指什么现象 当人们尝试探究两种变量 比如新生录取率与性别 是否具有相关性时 会分别对之进行分组研究 然而 在分组比较中都占优势的一方 在总评中有时反而是失势的一方 上表中 商学院女生录取率为49 lt 男生录取率75 法学院女生
  • 我做了10年的测试,由衷的建议年轻人别入这行了

    两天前 有个做功能测试7年的同事被裁员了 这位老哥已经做到了团队中的骨干了 人又踏实 结果没想到刚刚踏入互联网 老龄化 大关 就被公司给无情优化了 现在他想找同类型的工作 薪资也一直被压 考虑转行转型的话 上升空间又窄 昨天还在指点江山 今
  • 【计算机视觉

    文章目录 一 PASCAL Context 二 DAVIS 2017 三 COCO Stuff Common Objects in COntext stuff 四 RefCOCO 五 CamVid Cambridge driving Lab
  • 7.Xaml Image控件

    1 运行图片 2 运行源码 a xaml源码
  • 2016视觉目标跟踪总结

    最近学习视觉目标跟踪算法 主要了解了几个主流的跟踪算法 kcf stc dsst 算法原理网上很多 这里就不再赘述 只对跟踪效果做了测试记录 Kcf 全名Kernelized Correlation Filters 其中hog特征用的fho
  • 嵌入式(条件变量和线程池)

    条件变量 应用场景 生产者消费者问题 是线程同步的一种手段 必要性 为了实现等待某个资源 让线程休眠 提高运行效率 int pthread cond wait pthread cond t restrict cond pthread mut
  • 开头为0的md5值总结

    s878926199a 0e545993274517709034328855841020 s155964671a 0e342768416822451524974117254469 s214587387a 0e8482404488305379
  • MATLAB曲线拟合灵敏度,用Matlab曲线拟合工具箱curve fitting曲线拟合,原来是这样的...

    在使用Matlab软件时 对于曲线拟合来说 有两种方式 其一是编写程序代码 其二是利用Curve fitting工具箱进行 本例通过一个多项式拟合的小试验 向您介绍利用curve fitting工具箱进行曲线拟合的一般步骤 工具 材料 Ma
  • 分块查找算法思路、示例和实现

    分块查找 索引表 22 44 74 数组 22 12 13 9 8 33 42 44 38 24 48 60 58 74 47 算法步骤 通过索引表线性查找确定在数组的哪一 块 通过数组里所在 块 的线性查找确定是否存在 在哪个位置 算法代