查找-之线性索引查找

简介: 针对场景:博客网站论坛的帖子回复、服务器日志记录数据量大,每条记录无法做到有序排列记录

针对场景:

博客网站论坛的帖子回复、服务器日志记录

数据量大,每条记录无法做到有序排列记录

解决方法:

索引---把关键字和它对应的记录相关联的过程

索引分类:线性索引、树形索引、多级索引

线性索引:将索引项集合组织为线性结构---索引表

线性索引包括:稠密索引、分块索引、倒排索引

稠密索引

结构:

索引项---对应---记录

索引项是有序的、记录数据表可以是无序的

336ecfad9ae39dffbe2b1fb4ef2796e0_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

                         稠密 索引记录的结构图


查找方式:

索引项使用折半/二分法、插值查找、斐波那契查找

记录数据表--顺序查找

缺点:

数据集很大,则索引项很大,对内存有限的计算机,反复访问磁盘使得查找性能降低

生活示例:

小本子记录各物品的放置位置

分块索引

结构:

对数据集分为若干块,使得块满足:

块内无序:快内的记录不要求有序

块间有序--要求第二块所有记录的关键字均大于第一块记录的关键字

索引项---对应--每块

索引项的的结构包括3项:最大关键码、块内记录的个数、指向块首数据元素的指针

532d292305081745dfd6a07683c2f121_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

                         分块索引记录的结构图

查找方式:

块间--使用折半/二分法、插值查找、斐波那契查找

块内--使用顺序查找

应用示例:

图书馆书本的查找

普遍应用于数据库表查找

倒排索引

结构

次关键码--对应--记录号表

记录号表存储具有相同次关键字的所有记录的记录号

实际应用:依据属性(字段、次关键码)值查找记录

索引表:属性值和属性值的各记录地址

示例:索引表(单词表)

380ec39fbcafaa40519408633c36e05c_20200204164737830.png

特点:

查找记录快,在生成索引表后,查找时不用读取记录

实际应用:

搜索引擎等

目录
相关文章
|
7月前
|
算法 测试技术 C#
C++二分查找算法:包含每个查询的最小区间
C++二分查找算法:包含每个查询的最小区间
|
7月前
【每日一题Day340】LC2251花期内花的数目 | 差分+哈希表+排序 排序+二分查找
【每日一题Day340】LC2251花期内花的数目 | 差分+哈希表+排序 排序+二分查找
38 0
|
6月前
|
关系型数据库 MySQL 数据库
MySQL索引优化:深入理解索引合并
MySQL索引优化:深入理解索引合并
|
7月前
DAY-2 | 哈希表、指针与区间划分:字符种数统计问题
```markdown ## 题干 [牛客网链接](https://www.nowcoder.com/practice/eb94f6a5b2ba49c6ac72d40b5ce95f50) ## 题解 1. **查表法(哈希表)**:利用数组标记出现过的 ASCII 值小于127的字符,首次出现计数,重复则忽略。 2. **指针与区间划分(回头法)**:遍历字符串,对每个字符检查其前所有字符是否重复,重复则不计数。 ## 方法总结 - 哈希表在去重问题中非常实用,可多做相关练习。 - 使用`continue`时注意避免死循环,确保循环变量会改变。 - 多回顾此类问题以巩固理解。 ```
45 2
|
存储 算法 PHP
PHPHashtable 如何优化数组查找和排序
PHP 是一种高度流行的编程语言,被广泛用于web开发。它有很多的优点,例如易于学习、跨平台、简单易用的语法等等。而在 PHP 中,数组是一种非常常用的数据结构,它可以存储一组有序的数据,方便我们进行各种操作。
67 0
|
存储 算法 搜索推荐
【21天算法学习】索引查找
【21天算法学习】索引查找
76 0
二分法检索
二分法检索
102 0
二分法检索
|
存储 算法 C语言
C++实现查找 - 顺序、二分和哈希查找
前面我们其实已经涉及到了查找算法,比如二叉排序树和平衡二叉树等。这一讲我们来补充一下其它常见的查找算法,下面我会依次讲解并实现顺序查找、二分查找和哈希查找算法。
383 0
C++实现查找 - 顺序、二分和哈希查找
|
存储 SQL 缓存
B+树索引使用(9)分组、回表、覆盖索引(二十一)
B+树索引使用(9)分组、回表、覆盖索引(二十一)
|
存储 索引
599. 两个列表的最小索引总和 : 哈希表模拟题
599. 两个列表的最小索引总和 : 哈希表模拟题