一、查找概论
1.查找即依据给定的某个值,在查找表中确定一个其keyword等于给定值的数据元素(或纪录)。若表中不存在keyword等于给定值的纪录。则称查找不成功,此时查找的结果可给出一个"空"纪录或"空"指针。另外,查找表依照操作方式来分有两大种:静态查找表和动态查找表。
(1)查找表(Search table):是由同一类型的数据元素(或纪录)构成的集合。
(2)keyword(Key):是数据元素中某个数据项的值。又称为键值,用它能够标志一个数据元素,也能够标志一个纪录的某个数据项(字段),又称关键码;
(3)主keyword:若此keyword能够唯一地标志一个纪录,则称此keyword为主keyword(Primary Key),主keyword所在的数据项成为主关键码;
(4)次keyword(Secondary Key):对于那些能够识别多个数据元素(或纪录)的keyword,我们称为次keyword;
2.静态查找表(Static Search Table):仅仅作查找操作的查找表。
它的主要操作有:
(1)查询某个"特定的"数据元素是否在查找表中;
(2)检索某个"特定的"数据元素和各种属性。
3.动态查找(Dynamic Search Table)
    在查找过程中同一时候插入查找表中不存在的数据元素,或者从查找表中删除已经存在的某个数据元素。

它的主要操作有:

(1)查找时插入数据元素;
(2)查找时删除元素数据元素;
凝视:为了提供查找的效率,我们须要专门为查找操作设置数据结构。即改变数据元素之间的关系(表、树等结构)。
二、顺序表查找
1.定义:顺序查找又称线性查找。是最主要的查找技术,它的查找过程是:从表中第一个(或者最后一个)纪录開始,逐个进行纪录的keyword和给定值比較,若某个纪录的keyword和给定值相等,则查找成功。找到所查的纪录;假设直到最后一个(或第一个)纪录。其keyword和给定值比較都不等时,则表中没有所查的纪录,查找不成功。
2.顺序表查找算法
/*顺序查找:a为数组,n为要查找的数组个数。key为要查找的keyword*/
int  Sequential_Search(int *a,int n,int key)
{
    int i;
    for(i=1;i<n;i++)
    {
            if(a[i]==key)
                    return i;    //返回该keyword的纪录位置
    }
}
3.顺序表查找优化
    因为一般的顺序查找算法每次循环时。都须要对i是否小于等于n作推断。

从某些程序上来说,当总数据量非常多的时候。该推断无疑减少了查找的效率。我们能够通过在尽头设置一个"哨兵"的方法,来解决每次i与n作出比較的问题来提高查找效率。

长处:实现简单,小型数据查询效率较高。

缺点:n非常大时。查找效率非常低。

/*有哨兵顺序查找*/
int Sequential_Search2(int *a,int n,int key)
{
    int i;
    a[0]=key;        //设置a[0]为keyword值,我们称之为"哨兵"
    i=n;                //循环从数组尾部開始
    while(a[i]~=key)
    {
            i--;
    }
return i;            //返回0则说明查找失败
}
分析:此代码从尾部開始查找,假设在a[i]中有key则返回i值。查找成;否则一定在终于的a[0]处等于key,此时返回的是0,即说明a[1]~a[n]中没有keywordkey,查找失败。
时间复杂度:最好情况为O(1),最坏为O(n);查找失败n+1次时间复杂度为O(n);平均查找次数为(n+1)/2,即平均复杂度为O(n)。

14.查找概论与顺序查找相关推荐

  1. 查找算法--01 顺序查找和二分查找

    目      录 1. 顺序查找 1.1 顺序查找介绍 1.2 顺序查找适用范围 1.3 顺序查找代码实现 2.二分查找 2.1 二分查找介绍 2.2 二分查找适用范围 2.3 二分查找代码实现 2. ...

  2. SDUT-3378_数据结构实验之查找六:顺序查找

    数据结构实验之查找六:顺序查找 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 在一个给定的无序序列里,查找与给定关键字 ...

  3. 数据结构之查找算法:顺序查找

    查找算法:顺序查找 思维导图: 顺序查找的定义: 顺序查找的代码实现: 顺序查找的性能: 思维导图: 顺序查找的定义: 顺序查找的代码实现: typedef struct { //查找表数据结构int ...

  4. 顺序查找、折半查找及索引顺序查找

    静态查找表 只做查询的操作的查找表 动态查找表: 若在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素 顺序查找: 从开头一个个比较,直到查找到关键字或者到达末尾 平 ...

  5. 查找算法之顺序查找和二分查找

    1.顺序查找 基本思想:从数据结构线性表一端开始,顺序扫描,依次将扫描到的关键字值与给定key相比较,若相等则表示查找成功 :若扫描结束仍没有找到关键字等于key值的结点,表示查找失败. 顺序查找适合 ...

  6. 查找算法1——顺序查找

    查找也称为检索,是指从一批记录中找到指定记录的过程.查找算法是程序设计处理非数值问题非常重要的操作.查找算法包括:基于线性表的查找,基于树的查找,哈希表查找. 基于线性表的查找包括顺序查找.折半查找, ...

  7. python二分法查找算法_顺序查找算法和折半(二分法)查找算法,C语言查找算法详解...

    查找是指在大量的信息中寻找一个特定的信息.在计算机中,查找是非常重要的一个应用,比如"百度".查找算法的好坏直接影响查找的速度. 常用的查找算法主要有顺序查找和折半(二分法)查找: ...

  8. 查找(包括顺序查找和折半查找)

    顺序查找 顺序查找又叫线性查找,主要用于线性表中的查找.顺序查找通常情况下分为对一般无序线性表的查找和对按关键字有序的顺序表的查找.下面进行比较讨论: 1.一般线性表的查找 作为一个直观的查找方法,其 ...

  9. 二分查找法、顺序查找法

    //二分查找法 第一种方法 function erfen($x,$arr){$count=count($arr);$s=0;$h=$count-1;while ( $s<= $h) {$midd ...

最新文章

  1. nginx日记分割脚本
  2. IT工程师实战英语之一
  3. spring事务管理-xml配置aop事务(重点)
  4. QtUI设计:设置控件透明
  5. c#给定编码中的字符无效_C#程序检查给定的字符串是否等于(==)运算符
  6. python内建函数调用,Python 内建函数
  7. 发那科机器人点位编辑_【发那科】发那科机器人指令编辑大全
  8. CAD中 OLE不能旋转_AutoCAD中光栅图像和OLE图像,究竟如何选择
  9. 为什么在Excel文档单元格中输入长段数字就变为公式?干货来啦!如何解决在excel单元格中输入数字变为公式的问题?
  10. 编程题a ~ y的25个字母,从1位到4位的编码,输出这个编码对应的Index
  11. grub4dos linux live,Grub4DOS 正常引导 Ubuntu 16.04 镜像文件
  12. 达梦数据库DM8安装配置和使用
  13. Large Division-----同余模定理(大数的求余)
  14. 给定一个由N个非负整数构成的序列,我们来定义一下序列的中位数,如果N是奇数,在对序列排序后,中位数就是最中间的那个数,即排序后,中位数的位置为(N+1)/2,这里序列的位置从1开始。如果N是偶数,则中
  15. 计算空间中两线段之间的距离
  16. “真假美猴王”竟然是如来的一次运维事故
  17. 使用uni-app引入阿里巴巴矢量图以及出现小长方形解决方法
  18. 计算机辅助训练对吞咽障碍,计算机辅助认知功能训练对脑卒中后认知期吞咽障碍的疗效...
  19. Python黑魔法手册,共计 128 个黑魔法实例 一次学到嗨
  20. ElementUI h5 移动端照片拍照 本地预览 旋转压缩 并上传

热门文章

  1. Java项目:平行志愿管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)
  2. java 声明静态类_java静态类声明--java类可以声明为static吗
  3. python特性和属性_Python之属性、特性和修饰符
  4. Ant Design Vue中a-select组件下拉列表在局部滚动时不跟随问题解决方法
  5. jQuery中的插件机制
  6. 接口设计文档_app端接口用例设计方法和测试方法(一)
  7. threadlocal使用场景_深入剖析ThreadLocal
  8. VUE input唤起键盘 底部固定的标签被顶上去解决办法
  9. php判断前端传的多个字段与数据库匹配
  10. Fastlane 入门实战教程从打包到上传iTunes connect