定义
- 查找表:由同一类型的数据元素构成的集合,数据元素之间存在着完全松散的关系
- 静态查找表:只对数据进行查询或检索
- 平均查找长度(Average Search Length):和给定值进行比较的的关键字 个数的期望值
- ASL=∑i=1nPiCiASL=\sum_{i=1}^n P_iC_iASL=∑i=1nPiCi
- PiP_iPi为查找表中第iii个记录的概率,且∑i=1nPi=1\sum_{i=1}^n P_i=1∑i=1nPi=1
- CiC_iCi为找到表中关键字时已经比较过的次数
- 等概率情况下 ASL=∑i=1nPiCi=1/n∑i=1n(n−i+1)ASL=\sum_{i=1}^n P_iC_i=1/n\sum_{i=1}^n(n-i+1)ASL=∑i=1nPiCi=1/n∑i=1n(n−i+1)
有序表的查找
- 折半查找:先确定范围,再逐步缩小范围
- lowlowlow和highhighhigh分别指示待查元素所在范围的下界和上界,指针midmidmid指示中间位置,mid=⌊(low+high)/2⌋mid=⌊(low+high)/2⌋mid=⌊(low+high)/2⌋(向下取整)
- 查找过程可用二叉树来描述,找到任一结点的过程就是从根结点到该结点的路径,和给定值进行比较的关键词个数恰为该结点的层次数
索引顺序表的查找
- 索引表按关键词有序,前一块中的最大关键字<后一块中的最小关键字
- 分块查找:先确定所在块,再在块中顺序查找