大话数据结构-查找-线性索引查找

news2025/1/23 12:19:45

注:本文同步发布于稀土掘金。

4 线性索引查找

4.1 概述

  索引就是把一个关键字与它对应的记录相关联的过程,一个索引由若干个索引项构成,每个索引项至少应包含关键字和其对应的记录在存储器中的位置等信息。

  索引按照结构可分为线性索引、树形索引和多级索引,本文只介绍线性索引,所谓线性索引,就是将索引项集合组织为线性结构,也称为索引表。

4.2 稠密索引

  稠密索引是指在线性索引中,将数据集中的每个记录对应一个索引项,如下所示:

image.png

  由于稠密索引的索引项与数据集的数据量相同,因而稠密索引的数据量往往很大,因此对于稠密索引这个索引表来说,索引项一定是按照关键码有序的排列。

  折半查找到插值查找,都可以在稠密索引中进行高效使用。

4.3 分块索引

  稠密索引因为索引项与数据集的记录个数相同,所以空间代价很大,为了减少索引项的个数,我们可以对数据集进行分块,使其分块有序,然后再对每一块建立一个索引项,从而减少索引项的数量。

  分块有序,是把数据集的记录分成了若干块,并且这些块需要满足两个条件:

  (1) 块内无序,即每一块内的记录不要求有序;

  (2) 块间有序,块和块之间是有顺序的;

  对于分块有序的数据集,将每块对应于一个索引项,这种索引方法叫做分块索引。分块索引的索引项结构分三个数据项:

  (1) 最大关键码,它存储每一块中的最大关键字,这样的好处是可以使得在它之后的下一块中的最小关键字也能比这一块最大的关键字要大;

  (2) 存储了块中的记录个数,以便于循环时使用;

  (3) 用于指向块首数据元素的指针,便于开始对这一块中记录进行遍历;

  如下所示:

image.png

  在分块索引表中进行查找的步骤为:

  (1) 查找关键字所在的块;

  (2) 根据块首指针找到相应的块,关在块中顺序查找关键码,因为块内是可以无序的,因此只能使用顺序查找;

4.4 倒排索引

  倒排索引(Inverted Index)有索引结构中有两个元素:

  (1) 次关键码:即具体的关键字;

  (2) 记录号表,存储具有相同次关键字的所有记录的记录号(可以是指向记录的指针或者是该记录的主关键字);

  倒排索引中的每一项都包含一个属性值和具有该属性值的各记录的地址,由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因此称为倒排索引。

  例如有两本书:

image.png

  倒排索引表类似如下所示:

image.png

  其中英文单词就是次关键码,而文章编号则为记录号表。

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

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

相关文章

Python Opencv实践 - 简单的AR项目

这个简单的AR项目效果是,通过给定一张静态图片作为要视频中要替换的目标物品,当在视频中检测到图片中的物体时,通过单应矩阵做投影,将视频中的物体替换成一段视频播放。这个项目的所有素材来自自己的手机拍的视频。 静态图片&…

力扣每日一题:2646. 最小化旅行的价格总和(2023-12-06)

力扣每日一题 题目:2646. 最小化旅行的价格总和 日期:2023-12-06 用时:30 m 14 s 时间:8ms 内存:42.98MB 思路:先统计旅行中每个节点路过的次数(dfs方法),再计算减半后的…

智能优化算法应用:基于龙格-库塔算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于龙格-库塔算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于龙格-库塔算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.龙格-库塔算法4.实验参数设定5.算法结果6.参…

一个最新国内可用的免费GPT4,Midjourney绘画网站+使用教程

一、前言 ChatGPT GPT4.0,Midjourney绘画,相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和用户进行创作交流。 然而,GPT-4对普…

内核无锁队列kfifo

文章目录 1、抛砖引玉2、内核无锁队列kfifo2.1 kfifo结构2.2 kfifo分配内存2.3 kfifo初始化2.4 kfifo释放2.5 kfifo入队列2.6 kfifo出队列2.7 kfifo的判空和判满2.8 关于内存屏障 1、抛砖引玉 昨天遇到这样一个问题,有多个生产者,多个消费者&#xff0c…

❀My学习Linux命令小记录(14)❀

目录 ❀My学习Linux命令小记录(14)❀ 56.man指令 57.whatis指令 58.info指令 59.--help指令 60.uname指令 ❀My学习Linux命令小记录(14)❀ 56.man指令 功能说明:查看Linux中的指令帮助。 (ps.man命…

一网打尽损失函数和正则化的关系,在损失函数中加入正则化有什么用,如何加入,这里为大家用通俗易懂的例子进行详细解释!(系列1)

文章目录 一、BP神经网络预测中,常见的损失函数是均方误差损失函数MSE二、L2正则化的公式如下:三、 结合MSE和L2正则化的总损失函数公式如下:总结 一、BP神经网络预测中,常见的损失函数是均方误差损失函数MSE 在BP神经网络预测中…

ArcGIS Enterprise on Kubernetes 11.1安装示例

博客主页:https://tomcat.blog.csdn.net 博主昵称:农民工老王 主要领域:Java、Linux、K8S 期待大家的关注💖点赞👍收藏⭐留言💬 目录 安装前置条件基本安装解压文件生成秘钥执行安装脚本 配置DNS方法一方法…

基于jsp+servlet+mybatis的简易在线选课系统

一.数据库 根据实训题目中给出的表间关系图、数据表结构设计、数据说明等等信息,可创建数据库如下: 1.数据库和表的创建 CREATE DATABASE xuanke; -- 创建用户表 CREATE TABLE USER (username VARCHAR(20) PRIMARY KEY NOT NULL,PASSWORD VARCHAR(20)…

【Python】Python读Excel文件生成xml文件

目录 ​前言 正文 1.Python基础学习 2.Python读取Excel表格 2.1安装xlrd模块 2.2使用介绍 2.2.1常用单元格中的数据类型 2.2.2 导入模块 2.2.3打开Excel文件读取数据 2.2.4常用函数 2.2.5代码测试 2.2.6 Python操作Excel官方网址 3.Python创建xml文件 3.1 xml语法…

[实践总结] Java中读取properties配置文件

读取此key.properties文件 代码实现 import java.io.IOException; import java.io.InputStream; import java.util.Properties;public class PropertyUtils {private static final Properties properties new Properties();static {try (InputStream resourceAsStream Prope…

大数据Hadoop-HDFS_架构、读写流程

大数据Hadoop-HDFS 基本系统架构 HDFS架构包含三个部分:NameNode,DataNode,Client。 NameNode:NameNode用于存储、生成文件系统的元数据。运行一个实例。 DataNode:DataNode用于存储实际的数据,将自己管理…

Java LeetCode篇-深入了解二叉树经典解法(三种方式实现:获取二叉树的最大深度)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 对称二叉树 1.1 判断对称二叉树实现思路 1.2 代码实现:判断对称二叉树 2.0 二叉树的最大深度 2.1 使用递归实现获取二叉树的最大深度思路 2.2 代码实…

Docker-多容器应用

一、概述 到目前为止,你一直在使用单个容器应用。但是,现在您将 MySQL 添加到 应用程序堆栈。经常会出现以下问题 - “MySQL将在哪里运行?将其安装在同一个 容器还是单独运行?一般来说,每个容器都应该做一件事&#x…

浅析基于云的DNS管理与负载均衡技术

伴随企业越来越多地实现应用部署的自动化,他们需要快速、智能的负载均衡,从而支持整个数据中心和云环境的应用要求,保证应用可用性。当聊到到具体实现方式时,DNS负载均衡无疑是其中的重要方法。DNS负载均衡为何在当下如此重要&…

2024年十大最好猫罐头有哪些?2024年10款最好的猫罐头盘点

我发现不少人有这样的困扰!买到各种数值都很好的猫罐头后,猫咪一点都不吃。或者是猫咪吃了猫罐头之后,吃了一段时间后就软便身体不舒服。 通过本文,我将与大家盘点2024年10款最好的猫罐头,并提供一些选购猫罐头的小妙招…

基于ssm的网上花店设计论文

摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此鲜花销售信息的…

HarmonyOS学习--创建和运行Hello World

创建和运行Hello World 打开DevEco Studio,在欢迎页单击Create Project,创建一个新工程。根据工程创建向导,选择创建Application应用或Atomic Service元服务。选择“Empty Ability”模板,然后单击Next。关于工程模板的介绍和支持…

[Linux] nginx编译安装及系统服务添加

一、nginx 介绍 nginx和apache一样都是提供web网页服务的。 Nginx: Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还…

第三方组件自定义扫描规则

第三方例如dubbo自定义扫描组件规则方式注入进容器。例如DubboService注解的类注入进容器中,实现ImportBeanDefinitionRegistrar接口,并通过Import注解注入。 Import除了注入ImportBeanDefinitionRegistrar类,还可以注入配置类Configuration和…