【C# 数据结构与算法】 分块查找
作者:互联网
概览
分块查找
分块查找要求把一个数据分为若干块,每一块里面的元素可以是无序的,但是块与块之间的元素需要是有序的。对于一个非递减的数列来说,第i块中的每个元素一定比第i-1块中的任意元素大。同时,分块查找需要一个索引表,用来限定每一块的范围。在增加、删除、查找元素时都需要用到。使用场景
字典
班级
分块查找在现实生活中也很常用。例如,一个学校有很多个班级,每个班级有几十个学生。给定一个学生的学号,要求查找这个学生的相关资料。显然,每个班级的学生档案是分开存放的,没有任何两个班级的学生的学号是交叉重叠的,那么最好的查找方法实现确定这个学生所在的班级,然后再在这个学生所在班级的学生档案中查找这个学生的资料。上述查找学生资料的过程,实际上就是一个典型的分块查找。前提条件
前提条件线性表顺序存储
特点
当数据表中的数据元素很多时,可以采用分块查找。
分块查找又称为索引顺序查找。它汲取了顺序查找和折半查找各自的优点,既有动态结构,又适于快速查找。
特点:块内无序、块间有序
平均查找长度(ASL)
1、无规律的分布块
2、有规律的分布块
注意: 对索引表进行折半查找时,若索引表中不包含目标关键字,则折半查找最终停在low>high,要在low所指分块中查找
链式存储分块
标签:折半,班级,分块,C#,元素,学生,查找,数据结构 来源: https://www.cnblogs.com/cdaniu/p/16361415.html