静态查找(Static Search):在在查找时只对数据元素进行查询或检索,查找表称为静态查找表。
动态查找(Dynamic Search):在实施查找的同时,插入查找表中不存在的记录,或从查找表中删除已存在的某个记录,查找表称为动态查找表。
顺序查找(Sequential Search):
查找思想:
从表的一端开始逐个将记录的关键字和给定K值进行比较,若某个记录的关键字和给定K值相等,查找成功;否则,若扫描完整个表,仍然没有找到相应的记录,则查找失败。
折半查找(Binary Search)
前提条件:查找表中的所有记录是按关键字有序(升序或降序) 。
查找思想:
用Low、High和Mid表示待查找区间的下界、上界和中间位置指针,初值为Low=1,High=n。
⑴ 取中间位置Mid:Mid=ë(Low+High)/2û;
⑵ 比较中间位置记录的关键字与给定的K值:
① 相等: 查找成功;
② 大于:待查记录在区间的前半段,修改上界指针: High=Mid-1,转⑴ ;
③ 小于:待查记录在区间的后半段,修改下界指针:Low=Mid+1,转⑴ ;
直到越界(Low>High),查找失败。
分块查找:(Blocking Search)又称索引顺序查找,是前面两种查找方法的综合。
查找表的组织:
① 将查找表分成几块。块间有序,即第i+1块的所有记录关键字均大于(或小于)第i块记录关键字;块内无序。
② 在查找表的基础上附加一个索引表,索引表是按关键字有序的,索引表中记录的构成是:最大关键字,起始指针;
查找思想:
先用二分法确定待查记录所在块,再在块内查找(顺序查找)。
Fibonacci查找:(没看懂)