查找算法之线性表查找

一  基本概念

查找表:由同一类型的数据元素构成的集合。

静态查找表:支持的操作:(1)查询特定的元素是否在查找表中。(2)检索某个特定的元素的各种属性。(1)(2)操作统称为“查找”操作。

动态查找表:在进行查找的操作时候,同时插入不存在的元素,或者删除表中已经存在的元素。

平均查找长度(ASL):对关键字需要执行的平均比较次数作为衡量查找算法效率的标准。


二 线性表查找算法

1.顺序查找

顺序查找是最简单的查找方法,属于静态查找。基本思想是:从表的一端开始查找,依次用待查找的关键值与线性表的数据项进行比较,直至查找成功或者查找失败。


2.折半查找(二分查找)

查找时要求表中的结点按照关键字的大小顺序排序,且要求顺序存储。基本思想是:将待查找的关键值和线性表的中间位置结点的值相比较,比较结果相等,则查找成功,如果比较不成功,则根据待查找的关键值和中间位置结点值的大小来确定下一步的查找区域。就这样递归下去,直至查找成功或失败。


3.索引查找

索引查找是在线性表的索引存储结构上进行的,基本思想是:(1)首先将线性表按照一定的规则分成若干个逻辑上的子表,并分别为每个子表分别建立一个索引项,由这些索引项构成一个索引表。索引表通常包含:索引值(通常是线性表一些结点共同的属性);子表的起始位置,映射线性表的位置;子表的长度,表示子表的元素个数(2)第一步根据待查找的关键值的属性,在索引表进行查找,得到子表的起始位置和元素个数,若找不到则查找失败。第二步在主表中起始位置开始,在元素个数范围内查找,若查到表示成功,否则失败。


4.分块查找

分块查找法类似索引查找,需要建立索引表,又称索引顺序表。将线性表分成若干块,每一块的结点的存放是任意的,但块与块之间必须排序,将每一块的最大的关键值放入索引表中作为索引值,这样索引表是按序排列的。基本查找思想:(1)根据待查找的关键值与索引表中索引值进行比较,得到查找区域。(2)在查找区域里进行顺序查找,若查到表示成功,否则失败。



你可能感兴趣的:(算法)