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)为哈希函数。
     
    各查找算法平均查找长度
     
     
     
     
  • 相关阅读:
    (转)移动端实现垂直居中的几种方法
    FloatingActionButton 完全解析
    android 开源编辑器
    如何使用PullToRefresh
    Android 使用代码主动去调用控件的点击事件(模拟人手去触摸控件)
    Gradle 下载
    android studio 中移除module和恢复module
    android studio 使用jar包,arr包和怎么使用githup开源项目中的aar包或module
    DrawerLayout 和 NavigationView 的使用
    android studio 集成微信登录
  • 原文地址:https://www.cnblogs.com/CharmingDang/p/9663945.html
Copyright © 2011-2022 走看看