定义 设有一个集合T,其中有n个数据项,集合T及其中数据项的形式如下
T={(k0,I0),(k1,I1),...,(kn-1,In-1)}
k0,k1,...,kn-1是互不相同的关键字值
Ij(0≤j≤n-1)是与关键字值kj相关的信息
给定一个特定的关键字值K,查找问题是在T中确定数据项(kj,Ij),使得kj=K
查找表中的数据项也称为记录
每个记录至少包含一个关键字
记录中关键字的类型可以是能够进行比较操作的任意类型
- 顺序查找方法
初始时,将给定的关键字值K与表中第一个记录的关键字值相比较,若两个值相等则找到目标,查找成功;否则将K与表中下一个记录的关键字值继续比较并判断是否相等,依此类推。如果直到最后一个记录的关键字值与K都不相等,则表明所存储的数据中没有要查找的目标,查找不成功
查找的平均查找长度为(n+1)/2
不成功查找的查找次数为n
当数据按关键字有序存储时,可以改进顺序查找方法
折半查找也称为二分查找,其适用条件是数组中各个记录按关键字有序排列,所以折半查找只适用于有序表
折半查找并不从有序表的一端开始查找,而是从中间开始查找
- 例子
给定有序表
11 15 18 22 33 45 60 65 82 86 97
使用折半查找方法查找22,给出查找过程
初始时