基本概念
检索:一组记录集合中找到关键码值等于给定值的某个记录,或者找到关键码值符合特定条件的某些记录的过程
提高检索效率的方法:预排序、建立索引、散列技术(当不适于磁盘应用程序时可以选择B树)
平均检索长度是衡量一个检索算法优劣的时间标准(ASL)
基于线性表的检索
顺序检索
检索成功时ASL = (n+1)/2,失败时为n+1,检索平均时间O(n),优点:新加入元素可以直接插在表尾
二分检索
O(logn),缺点:序列要有序,顺序存储,不易更新
分块检索
顺序检索和二分检索的折中,将n个数据分成b块,块内是无序的,块间是有序的。这就引入了索引表的概念,索引表记录了各块中的最大关键码、及各块起始位置、可能还需要块中元素个数(每一块可能不满)。
检索的时候,如果块间、块内使用顺序检索,ASL = (b+1)/2+ (s+1)/2, s是每块内的数量,b是块数量,当s= sqrt(n) 时,ASL取最小值, ASL=
+1 ≈
当块间使用二分检索,块内使用顺序检索时,
ASL
=
ASL
b
+
ASL
w =