查找算法

概念
    是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算。用关键字标识一个数据元素,查找时根据给定的某个值,在表中确定一个关键字的值等于给定值的记录或数据元素。在计算机中进行查找的方法是根据表中的记录的组织结构确定的。
 
顺序查找
    也称线性查找,从数据结构线性表的一端开始,顺序扫描,依次扫描到的结点关键字与给定值K的比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于K的结点,表示查找失败。
优缺点:效率低
二分查找
    要求线性表中的结点按关键字值升序或降序排列,用给定值k先与中间结点的关键字比较,中间结点把线性表分成两个子表,若相等则查找成功;若不相等,再根据k与该中间结点关键字的比较结果确定下一步查找哪个子表,这样递归进行,直到查找到或查找结束发现表中没有这样的结点。
查找要求:
1、必须采用顺序存储结构;
2、必须按关键字大小有序排列。
优缺点:
优点:比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,二分查找法适用于不经常变动而查找频繁的有序表。
 
分块查找
    也称索引查找,把线性分成若干块,在每一块中的数据元素的存储顺序是任意的,但要求块与块之间须按照关键字值大小有序排列(后面一块的任意一个值的大小都大于前一块的任意一个值),还要建立一个按关键字值递增顺序排列的索引表,索引表中的一项对应线性表中的一块,索引项包括两个内容:1、键域存放相应块的最大关键字;2、链域存放指向本快第一个结点的指针。分块查找分两步进行,先确定待查找的结点属于哪一块,然后在快内查找结点。
 
哈希表查找
    通过对记录的关键字值进行运算,直接求出结点的地址,是关键字到地址的直接转换方法,不用反复比较。假设f包含n个结点,Ri为其中某个结点(1<=i<=n),keyi是其关键字值,在keyi与Ri的地址之间建立某种函数关系,可以通过这个函数把关键字值转换成相应结点的地址,有addr(Ri)=H(keyi),addr(Ri)为哈希函数。
 
各查找算法平均查找长度
 
 
 
 
原文地址:https://www.cnblogs.com/CharmingDang/p/9663945.html