zoukankan      html  css  js  c++  java
  • 查找算法

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