查找
- 概论
查找表(search table):是由同一类型的数据元素构成的集合
关键字(Key):是数据元素中某个数据项的值
查找(Searching):就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素
查找方式 | Value |
---|---|
静态查找表(Static search table) | 只作查找操作和查找表 |
动态查找表(Dynamic search table) | 在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的某个数据元素。 |
-
顺序查找
定义:(Sequential search)又叫线性查找,是最基本的查找方式,过程就说从表中第一个元素记录开始,逐个进行记录的关键字和给定值的比较,若给定的关键字和给定值相等,则查找成功。 -
有序表查找
a.折半查找:通过二分验证的方式进行查找
b.插值查找:不是二分的方法,更加有目的性。根据要查找的关键字Key与查找表中最大最小记录的关键字比较后的查找方式。
c.斐波那契查找:
首先斐波那契数列为0、1、1、2、3、5、8…
看出规律了吧,就是给定前两个数相加得到第三个数,以此类推,此外:前一个数除以相邻的后一个数,比值无限接近黄金分割。比如5/8 = 0.625.越往后越接近0.618.
查找的核心是:
(1)当要查找的数key = a[mid]时候,查找成功;
(2)当key < a[mid]时候,新范围是第low个到第mid-1个,此时范围个数为F【k-1】-1个;
(3)当key > a[mid]时候,新范围为第mid+1个到high个,此时范围个数为F[k