检索
什么是检索
根据key去查找<key,value>,其中value可能是一个集合(好多信息)。所以检索的效率很重要,尤其当是大数据量的时候。需要对数据进行特殊的存储处理
检索包括:线性表的检索、集合的检索、散列表的检索(常数时间内响应O(1),与规模无关的,常用搜索引擎的方法)
提高检索的方法:预排序(如二分法,但是排序的过程本身耗时)、建立索引(建立辅助索引,用空间换时间,并且要维护额外的索引)、散列技术(与数据规模无关,但是不能用于查找范围内的,不能用于存在重复key的,不能用于磁盘)
图1
图2
线性表索引(O(n))
二分索引(O(log n))本质上是BST结构(二叉搜索树),但是需要提前排序并且插入不方便
图3
图4
分块检索
块内无序,块间有序,结合以上两种方法,查找较快也插入较方便。
图5
图6
集合检索
图7
散列检索
图8