数据结构 第八章 查找(静态查找表)

article/2025/9/16 22:29:21

集合

1、集合中的数据元素除了属于同一集合外,没有任何的逻辑关系
2、在集合中,每个数据元素都有一个区别于其他元素的唯一标识(键值或者关键字值)
3、集合的运算:

1 查找某一元素是否存在(内部查找、外部查找)
2 将集合中的元素按照它的唯一标识进行排序

4、集合的存储:

1 任何容器都可以存储集合
2 常用的表示形式是借鉴于线性表或树

5、唯一 一个仅适合于存储和处理集合的数据结构是散列表

注意:
散列表不但是一种存储方法也是一种查找方法

查找

1、查找表:用于查找的集合称为查找表
2、查找表的分类:

1 静态查找表:其中的元素是静态的(不会动态变化)
2 动态查找表:其中的元素经常进行插入和删除操作(会动态变化)

3、平均查找长度:是指查找过程中对关键码的平均比较次数

请添加图片描述
注意:顺序查找从左到右

顺序查找(无序表)

毫无选择只能做线性的顺序查找
请添加图片描述

注意:监视哨在data[0]的位置

请添加图片描述
核心步骤:(一定是可以找到该元素的)

int i;
data[0] = k;
//从后往前查找
for(i=data.size()-1;k!=data[i];--i)
return i;
//查找成功返回该元素的对应下标
//查找失败返回0(在下标为0的位置找到该元素)

顺序查找(有序表)

和无序表的顺序查找是类似的,只是当被查找元素在表中不存在的时候,不需要遍历到表尾请添加图片描述
例如:在0 2 4 6 8 中查找5的时候,从后往前遍历,走到4的时候就可以结束遍历
请添加图片描述
核心步骤:

int i;
data[0] = k;
//从后往前查找
for(i=data.size()-1;k<data[i];--i)
if(k == data[i]) return i;
return 0;

无序表的顺序查找的平均查找长度(ASL)

注意:从后往前进行比较

推导:
1 查找第一个元素需要比较n次
2 查找第二个元素需要比较n-1次
3 ...
4 查找第n个元素需要比较1次
5 那么总共需要比较n*(n+1)/2
6 假设每个关键码都是等概率的:p = 1/n
7 那么n*(n+1)/2 * 1/n = (n+1)/2
8 也就是说:在查找成功的情况下平均需要比较(n+1)/2个元素

请添加图片描述
请添加图片描述
注意:n*(n+1)*(1/n) = (n+1)

1 查找每个元素都需要从末尾比较到0

该算法的时间复杂度为O(n)
请添加图片描述

折半查找(二分查找)

请添加图片描述
请添加图片描述
查找成功:
请添加图片描述
请添加图片描述
查找失败:
请添加图片描述
请添加图片描述
非递归折半查找:
请添加图片描述

int low = 1;
int high = data.size()-1;
int mid;while(low<=high)
{mid = (low+high)/2;if(k == data[mid])	return mid;if(k<data[mid])	high = mid-1;else	low = mid+1;
}return 0;

请添加图片描述
递归折半查找:
请添加图片描述

折半查找(判定树)

请添加图片描述
请添加图片描述
请添加图片描述
注意:
对判定树进行中序遍历得到的序列和有序表一样

外部结点和内部结点:
注意:

1 外部结点数目 = 内部结点数目 + 1
2 外部结点都是叶子结点
3 内部结点都是度为2的结点
4 n0 = n2 + 1

请添加图片描述
计算平均查找长度:

1 查找成功(内部结点):(1*1+2*2+3*4+4*2)/9 = 25/9
2 查找失败(外部结点):(3*6+4*4)/10 = 34/100

请添加图片描述
折半查找的性能:
请添加图片描述
请添加图片描述

分块查找(索引顺序块的查找)

请添加图片描述
注意:

1 块之间是有序的(第一块所有值小于第二块的所有值...)
2 在块内的元素之间可能有序也可能无序

索引表:
请添加图片描述
请添加图片描述

注意:
1 先在索引表内查找
2 在对应块内的查找

典型题目解析

请添加图片描述


请添加图片描述
解释:
1 左边是小于
2 右边是大于
3 判断是否为一条直线

请添加图片描述


请添加图片描述


请添加图片描述
请添加图片描述
注意:
左分支高度大于等于右分支(向上取整)

易错题

请添加图片描述

注意:折半查找判定树的高度和完全二叉树的高度是一致的

1 向下取整:**右分支的长度大于等于左分支的长度**

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
答案为:
1 3 6 8 11 13 16 19


请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述


请添加图片描述
请添加图片描述


请添加图片描述
请添加图片描述


http://chatgpt.dhexx.cn/article/6ZTnXySZ.shtml

相关文章

9.1 查找表:静态查找表

9.1 查找表&#xff1a;静态查找表. 9.2 查找表&#xff1a;动态查找表. 9.3 查找表&#xff1a;哈希表. 9.1 查找表&#xff1a;静态查找表 1 基本概念2 抽象数据类型3 顺序查找表3.1 顺序存储结构模块中的实现3.2 分析顺序查找的时间性能. 4 有序查找表4.1 代码实现4.2 折半查…

数据结构----查找表

前言 突然发现自己过得茫茫然&#xff0c;学过的东西&#xff0c;似懂非懂&#xff0c;不知所以。昨晚打开以前瞎写 的博客&#xff0c;又来了兴趣。 人在反思中成长&#xff0c;在总结中进步。加油&#xff01;目录 前言 查找表 正文静态查找表顺序查找表有序查找表索引查找表…

sql server查找表的字段信息

查找表的字段信息 SELECT (case when a.colorder1 then d.name else end) N表名, a.colorder N字段序号, a.name N字段名, (case when COLUMNPROPERTY( a.id,a.name,IsIdentity)1 then √else end) N标识, (case when (SELECT count(*) FROM sysobjects WHERE (name in (SEL…

算法——查找表

查找&#xff0c;根据一个值查找另一个值&#xff0c;value值可以是容器&#xff0c;结构&#xff0c;这样可查找的元素就更多&#xff1b; 哈希冲突&#xff1a; 主关键字&#xff1a;可以唯一的标识一个记录的关键字&#xff0c;如准考证号&#xff1b; 此关键词&#xff…

LUT 查找表(Look-Up-Table)

LUT就是查找表&#xff0c;对于4输入的LUT而言&#xff0c;实际上就是4位地址位&#xff0c;一位数据位的存储器&#xff0c;能够存储16位数据&#xff0c;所以我们在FPGA设计中可以用LUT组建分布式的RAM。 如果用传统的逻辑来实现一个4输入的逻辑电路&#xff0c;需要大致三个…

查找表(LUT,Look-up Table)的简单理解

查找表&#xff08;LUT&#xff0c;Look-up Table&#xff09;的简单理解 引入&#xff1a;假设有一个 4 输入(a,b,c,d) 1 输出(o) 的逻辑单元&#xff0c;想要了解其内部结构。 输入按照 0000-1111 去遍历&#xff0c;记录输出。得到真值表&#xff0c;运用卡诺图对其化简&a…

查找表算法

查找表是由同一类型的数据元素构成的集合。 一般对于查找表有一下几种操作&#xff1a; 1、在查找表中查找某个具体的数据元素&#xff1b; 2、在查找表中插入数据元素&#xff1b; 3、从查找表中删除数据元素。静态查找表和动态查找表在查找表中只做查找操作&#xff0c;不带动…

数据结构之查找表

前言 今天学习数据结构看到了一个词-静态查找表&#xff0c;还有与之对应的动态查找表&#xff0c;然后我发现。 啊&#xff0c;这是个啥&#xff0c;好像知道又好像不知道&#xff0c;不就是查找吗&#xff0c;干嘛弄这些专业的说法&#xff0c;回头翻了一下数据结构的书&am…

数据结构查找表详解(包含常用查找算法)

** 1. 什么是查找表 ** 在日常生活中&#xff0c;几乎每天都要进行一些查找的工作&#xff0c;在电话簿中查阅某个人的电话号码&#xff1b;在电脑的文件夹中查找某个具体的文件等等。本节主要介绍用于查找操作的数据结构——查找表。 查找表是由同一类型的数据元素构成的集…

FPGA工作原理

一.查找表&#xff08;Look-Up-Table)的原理与结构 采用这种结构的PLD芯片我们也可以称之为FPGA&#xff1a;如altera的ACEX,APEX系列,xilinx的Spartan,Virtex系列等。 查找表&#xff08;Look-Up-Table)简称为LUT&#xff0c;LUT本质上就是一个RAM。 目前FPGA中多使用4输入的…

FPGA知识积累【3】

目录 1.查找表&#xff08;LUT&#xff09;原理与结构2.FPGA基本结构3.FPGA的RAM、ROM、CAM4.硬件语言的层次5.寄生效应6.线与逻辑7.竞争冒险8.消除竞争冒险的方法 1.查找表&#xff08;LUT&#xff09;原理与结构 ①查找表简称LUT&#xff0c;本质上就是一个RAM。目前FPGA中多…

数据结构导论【六】之 查找表

感谢内容提供者&#xff1a;金牛区吴迪软件开发工作室 接上一篇&#xff1a;数据结构导论【五】之 图 文章目录 一、基本概念二、静态查找表的实现1.顺序表上的查找 -- 顺序查找a.过程b.算法c.算法分析 2.有序表上的查找 -- 二分查找a.二分查找思想b.二分查找过程c.二分查找算法…

查找表(Lookup table)

查找表&#xff08;look-up-table&#xff09;这个名字很好听&#xff0c;缩写 LUT&#xff0c;听起来很高端&#xff0c;其实是一种很简单高效的索引操作&#xff0c;今天简单介绍一下。 是啥 wiki定义&#xff1a; a lookup table is an array that replaces runtime computa…

从底层结构开始学习FPGA(2)----LUT查找表

文章目录 系列目录与传送门 一、概述 二、实现原理 系列目录与传送门 《从底层结构开始学习FPGA》目录与传送门 一、概述 记得刚接触FPGA的时候&#xff0c;总能看见类似这样的一句话----FPGA是基于查找表LUT的可编程逻辑器件。FPGA常常被人比作“数字积木”&#xff0c;就是因…

码,主码,主属性,非主属性,平凡函数依赖,完全依赖等词解释

码&#xff1a;代表数目的符号 主码 我们在建立数据库的时候&#xff0c;需要为每张表指定一个主码&#xff0c;主码也叫主键。 所谓主码就是在实体集中区分不同实体的候选码。 一个实体集中只能有一个主码&#xff0c;但可以有多个候选码。 必须注意两点&#xff1a; 1.主…

SpringBoot项目打jar后执行jar包提示:xx没有主属性清单 解决

SpringBoot项目打jar包后执行jar包提示&#xff1a;xx没有主属性清单 解决 今天在练习SpringBoot项目打jar包部署的时间遇见了一个问题&#xff1a;jar中没有主属性清单&#xff0c;对此也是比较疑惑&#xff0c;在百度之后找到了解决方式 主属性清单是jar包中MANIFEST.MF文件中…

【图示化】SQL Server概念:超键(码)、候选键(候选码)、主键(主码)、主属性与非主属性、外键

关系模型概念 字段属性名&#xff0c;每一行就是一条记录一个元组&#xff0c;每个单元格就是一个分量&#xff0c; 主键&#xff0c;外键 主码主键主关键字 超键&#xff08;码&#xff09;&#xff0c;候选键 码超键 超键 &#xff08;唯一的&#xff0c;可多余&#xff09; …

候选码、主码、全码、外码、主属性、主键、主关键字、非主属性

一、讲解 首先说明 键字码字&#xff0c;所以 主键主码主关键字&#xff0c;候选键候选码候选关键字… 所谓关系键&#xff0c;指的是一个表中的一个&#xff08;或一组&#xff09;属性&#xff0c;用来标识该表的每一行或与另一个表产生联系。 话不多说&#xff0c;上图&a…

软考系列之候选码,主码,主属性,非主属性详讲

候选码&#xff0c;主码&#xff0c;主属性&#xff0c;非主属性详讲 文章目录 目录 文章目录 前言 一、候选码&#xff0c;主码&#xff0c;属性&#xff0c;非主属性的定义 二、具体题目 三、补充 前言 软考刷题&#xff0c;遇到这系列的题目&#xff0c;对我来讲&#xff0…

数据库中主键、主码、主属性、关键字、候选关键字、码的区别

码是数据库系统中的基本概念&#xff0c;所谓码就是能唯一标识实体的属性&#xff0c;它是整个实体集的性质&#xff0c;而不是单个实体的性质。它包括超码、候选码和主码。 &#xff08;1&#xff09;超码是一个或多个属性的集合&#xff0c;这些属性可以让我们在一个实体集中…