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