7.2.1顺序查找

 

 

 

我拿出来给你的,已经是我有的最好的了,怎么才能让你看到我呢。只要你要,只要我有。哈哈哈加油加油⛽️

大家好,我们今后来学习第1种方式方式就是顺序调整。各位同学大家好,本节课我们来学习,第1种查找方式就是顺序查找,顺序查找是所有操作方式当中最简单最好理解的那一种,假设现在我们有一群小朋友,我们让他们整成一排,如何找到其中一个小朋友呢,假设我们现在要找到小城,那么我们要从头开始与每一个小朋友进行比较大大,是不是小潮,那么第1个小马小黄当然不是小城了,所以我们有一次找寻下一个小朋友,小青也不是小潮,然后看一下小蓝,第3个小朋友是小蓝,也不是小城,最后我们在第4个小朋友上找到了小程,这样我们就通过了这样一种一次查找的方式,找到了小船,这样一个小朋友,其实这种茶友方式就是今天所要讲述的顺序查找,它是如何定义的呢,顺序查找在书中是这样定义的,又称为线性查找,主要用于在线性表中进行查找祝一下。不是,就是今天所讲述的顺序查找它是如何定义的呢,顺序查找在书中是这样定义的,又称为线性查找,主要用于在线性表中进行查找,同学们要注意一下顺差,找一定是在线性表当中进行查找的一种方式,那么在椭圆当中,它主要用于在线性表中进行查找,在线性表中它是最方便也是最好实现的好,这就是顺序查找的定义,那么对于先天们来讲,其中的数据元素可以是有序的也可以是无序的,那么对于无序线性表和有序性表,它们的顺序调整方式会有不同吗。我们首先来看一下无序限行表的顺序查找,我们希望这些小朋友对他们进行编号,那么这些编号是没有顺序的,这是不是就是我们上节课所讲述的关键字啊,每一个小朋友对应着唯一一个关键字关键字之间是不同的,好,我们刚刚对3号小朋友也就是小程进行了查找,需要比较4次,那么现在我们要找一个小朋友,他是小a他的编号为7,我们一眼看上去他并不在上面,这一排小朋友当中如何表明他不在呢?我们是不是要从头开始找寻每一个小朋友啊?那么第1个小朋友他编号为22 57,所以小黄不是小黑,然后我们依次的进行查找进行编号的比较,直到比较到最后一个小飞小飞,我们发现小魏的编号为4也不是气,所以他也不是小黑,那么找学生小丽之后,我们是不是就发现了这一排并没有小黑这样一个小朋友如果。并没有小黑这样一个小朋友,那么对于无序现象来讲,如果想要证明一个数据原则,那么在该节课当中,是不是要对所有的数据元素进行比较,如果这些树元素都不是我们想要查找的一个数,原宿才表明了我们所要查找的数学元素,并不在所要查找的这个集合当中,所以对于无线里面来讲,进行顺序查找时,查找失败时要便利整个c形表,才可以说明我们需要查找的数据元素不在该写的文章中好,这就是无序相应表达顺序,查找查找失败时我们需要注意的地方好,那么对于线性流程查找是不是就是从一端开始一次的进行查找啊?那么实现它的代码是不是也会非常简单啊?这就是是检查代码,那么首先我们定义了一个cot,这个cot表明了我们所要查找的这个查找表,它叫sst报其中一个是我班所有数据我们有一个。它是线上代码,那么首先我们定义了一个cot,这个cot表明了我们所查找的这个查找表,它叫sst包,那么其中有两个元素,第1个是我们存储所有数据元素的这个数组,我们用一个指针类型的变量表示,那么下面这一个整形变量表示的是整个表的长度好,这就是我们定义了一个查找表的结构体,接着我们就对该结合体进行查找,这个该查找表进行查找,那么下面这个函数就是我们所进行的顺序查找的函数,这里反馈的是我们查找到的这个数据元素的位置,那么传输参数有两个,第1个是传入到这个产生表,第2个是我们要查找的这个关键字,那么我来看一下它是如何实现的,其实非常简单,首先我们要第1个元素数字当中的零散的这个元素赋值,为我们所要查找的关键词什么意思啊这是一个哨兵的概念那么我们将这个保存数据。布置为我们所查找的关键字,但是什么意思呢?其实这是一个哨兵的概念,那么我们将保存数据元素数组的第1个位置,也就是您下标的位置,作为一个哨兵,它并不存放任何的数据元素,那么首先我们初始化是先把它存放了我们这个所要查找的关键字,那么接下来我们来看一下它是如何进行查找的,我们就是要这个哨兵的作用了,那么接下来的过程就是这样一个负循环语句,那么我们可以看一下这个for循环的作用,首先我们要这个初始化里面变量I为我们查找表的长度,也就是说我们是全部用于100 100兆的,那么每次进行简易向前进行查找,直到找到这个关键词的时候,就100 120就终止循环,最后是不是就返回这个位置这个有什么作用呢。回这个所查找的这个元素的位置啊,那么这里的这个哨兵到底有什么作用呢?我们发现如果干预数据元素并没有在我们所查找这个查找表当中,是不是就会从未一直循环到头啊?当循环到头之后,我们在哨兵位置水平下标的位置设置了,它就是我们所要查找的这个关键字,那么这个放血管是不是就是在哨兵的位置停止,它一定会在执行的情况下,因为哨兵的位置,我们之前初始发尾拉我们所查找的关键字,那么也就是说如果查找失败的话,我们这个范围是会返回哨兵的下标也就是零那么零次代表查找失败,那么为什么要增加这个哨兵呢?它的作用是什么呢?其实它的作用就是我们不用在天下额外的判断一些东西,我们来看一下,如果没有这个设备的话,我们从头到尾都进行查找,那么从头到尾请查找,如果查找失败的话,是不是就要迅速把它倒掉。是不是不好插手循环到流尾了我们在循环之后是不是还要做一个条件判断语句,也就是我们要增加一个判断语句判断我们循环结束的这个位置是不是在标本如果是在标本则表示它这种失败如果不是在表本时代表中的话,则表示它是查找成功,所以我们利用这个哨兵的概念省去了这样一个条件判断的过程,那么对于比较复杂的代码,那么这样条件判断的程序会给我们之后的时限增加非常大的便利,所以我们增加了这样一个哨兵,但是同学们注意一下,不是所有的实验代码都会使用哨兵这样一个概念的,所以我们在做题时也要具体问题具体分析好,这就是实现顺序查找的我们也用长度是吗。啊,是不是sl表示平均插入长度啊?它是利用了这样一个惩击求合的方式,那么pi代表的是查找每一个数据元素的概率,那么通常我们给它为n/1,也就是所有的数据元素,它查找的概率是相等的,那么之后的这个CS表示dnf元素它的产生长度也是它的比较次数,我们利用这样一个求和公式计算了整个查账表的平均查找长度,那么对于顺序表它的查处成功时的平均查处程度是怎样计算的呢?我们来看一下,我们知道我们是从尾向前计算的,所以说每一个数元素它的比较次数是n-a+1,那么它的pa是不是就是n/1啊?我们把它带进去就可以计算出我们对应照顺序查找的平均产的长度,将它化简之后就是+/n21,我们发现顺序查找它的使用效率,是不是一个n的数量积啊。顺序查找它的时间效率,是不是一个n的数量积啊?那么如果是查找失败,它的查找单位是什么样子呢?我们知道在无序限行表当中是不是查找失败,只有便利者和线性表才可以说明该数据元素,我在该查找表当中啊,所以说如果查有失败我们比较次数一定是n加一次,那么这里为什么是n+14呢?同学们肯定会有疑问,因为整个线性表长度如果是n个数据元素的话,我们比较n次是不是就可以了,但是这里的嘉羿表示的是我们上面实现的这个代码上面,这个时间代码查找失败时我们比较加一次,大家还记不记得我们也入了一个哨兵啊比较所以说再加上所以说这一场路是。它的失败肯定才有长度,是n加一次,还有这就是有关顺序查找的成功和失败的平均查找长度,这个过程当中也是这样进行查找的码子,看一下学前一秒的顺序查找是如何进行的,那么我们将所有的小朋友进行有序的排列,也就是说按关键字从小到大的顺序进行了排练,我们还是来找一下小成,这个小朋友就要从头开始比较,那么从它开始,小红小黄最后在第3个位置找到了小抄,那么我发现如果该数元素存在在该材料表当中,是不是他的上头。进行了排练,我们还是来找一下小成这个小朋友,你就要从头开始比较对吧,从头开始小红小黄,最后在第3个位置找到了小程,那么我发现如果感受元素存在在该强壮表当中,是不是他的这种方式与无序的现象表示相同的,那么接下来我们来看,如果柏树元素不再在阐述表当中呢,我们来找一下小黑,那么小黑她的变成周,我们依旧要从头开始进行比较最后小玉的编号15也不是4,那么我们还需要接下来来进行比较吗?是不是不用了?因为五编号之后的所有数学元素,它的关键词是不是都要比四要大呀,所以说我们查找到小玉就可以判断小黑不在该产品当中。是不是都要比死要大呀?所以说我们查找到小玉就可以判断小黑不在该查找的当中,我们发现那是不是与无序限行表的顺序查找是不同的,如果该数元素不在待产当中无需鉴定表,我们要查找整个家装表,也就是对应比较所有的数据元素才可以证明该数据元素不再在查查表当中,那么对于有序的线性表,我们只要找到比它大的那一个关键字为止,就可以说明该查找的元素不再在查找表当中了,那么我们发现对于有序的线性表,它的查找查找失败时,它是不是会更加的有效率啊?所以我们有这样的结论对关键字有序线性表进行适应查找时查找失败,不一定要并列整个线性表,我们只要编列比它大的那个数据元素的位置就可以了一个所有。一个所有的数学元素换一次,从小到大排列的线性表当中进行查找的话,假如我们现在要查找的一个关键字本k,如果我们查找到da个关键的字时,且I的值要比kl大的话,那么则说明查找失败,也就是说其后的是元素都不是k了,为什么啊?因为其后的数学元素是不是都比kl大,它是从小到大相排列的,这样我们就可以缩短了有序线性表的平均差长度,查找失败时的平均差的长度,大家注意一下,这里常有成功的朋友常有长度,是不是依旧是相同的呀?我们是缩短了查找失败时的平均查找长度,那么怎样计算有序性的表顺序查找的查找失败时的,平均查找长度的就是描述成的什么。他们是描述查找过程的22排序数,我们来以一个例子来具体的讲解一下,什么是判定数,这是一个有序进行表,它是从小到大行排列到了12 10 30和40 50,我们现在构造它的判定数,首先我们将所有的数据元素构造出了一个二次函数,那么在该样式函数当中,我们所有所有的数都要比跟c点的值要小,所有右侧数不要变比较大,所以我们叫他们给我造成了这样一颗22排序数,那么接下来在查找过程当中,除了之前查找成功的节点,我们可以查找到的数据元素,是不是还有那些我们常常用到的数据元素啊,那么那些数据元素集合应该怎样表示呢?是这样表示的,那么这些橙色就行,是不是就是查找室外室的查找元素的集合呀,那么我们来看一下根结点也就是值为10的这一个节点。元素的集合呀,那么我们来看一下根结点也就是值为10的这一个节点,它的着作数是不是就是所有比赛该签的表当中的数据元素,它是服务熊当时这样一个集合,那么二是这个节点的左子数,也是所有不在该线段当中元素的集合10~20这一个区间,接下来我们来看一下最后这一个节点,最后这个点除了40~50这一个集合这个区间之外,还有50道正无穷这一个区间,它的所处元素都不再在线性表当中,这样我们就构造出了描述查找过程的这样一个2叉排序树,他就是该找的判定数,我们称这些橘黄色的矩形叫做失败的节点,它代表了我们查找失败的这样一个类似的取消。他代表查找失败的这样一个例子,那么其实这些黄色矩形在有些教材有些题目当中,我们是把它认定为实际存在的节点,就是该判定书的一些点,那么在有一个教材,有些题目当中,也把它看作一个空间点的,一个虚拟存在的空间点大家要具体问题来具体看,那么如何可以用判定数来描述查找的过程当中我们来查找一个数据元素,试一下查找30这个数据元素,它存在这样一个现象当中,我们首先要从根基上出发,查找更先进的元素的痣,它是使我们发现它并不等于30,那么接下来我们应该查找时的竹子树还是柚子树,当我们发现所有数的值是不是都比30比较小啊?所以我们要查找他的柚子树,那么我们到他的柚子树比三十大但是一二十位数二十。月子数所有值都要比30要大,那么查找约数数的根基点,它是以20为根基点的子数,20并不等于31就要查找它的柚子数,我们一就要查找u字数的更节点,月色数的更节点是不是等于30啊?这样我们就查找到了30这个节点,它是在我们这个线性表当中,这就是我们利用了判定数来描述了查找35这个元素的过程,那么接下来我们来看一下,如果查找一个不存在在DNA表当中的元素呢,于是查找25这个值,我们一定要从本节点出发,更经典是10那么25:10要大,所以要查找它的柚子数,那么查找柚子数时,柚子数要跟节点为20,那么25亿就是你20要大的,所以我们要查找20万的用什么数。25:10要大,所以要查找他的柚子树,那么插手柚子树,16的数字节点为20,那么25依旧比20要大,所以我们要创造20的有算数那么20个柚子树,它是30那么25是不是要比30要小,所以要查找到30~50岁到30岁的时候,是不是对应的是一个失败景点啊?这样我们就说明了查找25这个操作是失败了,25是不在该现象比较多的,所以我们发现了,如果我们查找失败,是不是就会一定要走到对应的失败节点啊?这就是查找失败的一个例子,我们发现查找失败时,我们一定会走到它对应那个区间的室外节点,并且对于顺序查找来讲,那么查找失败它的比较次数是不是就是该失败的节点的次方数减1啊减一我比较老实。失败的节点的4成数减1啊,大家要记住是失败写点凑数减1,我们比较了12 10 30这三个成功的节点,那么对应的对应走到了30的下一个层面就是20~30这个失败节点,我们按照这样的规律就可以计算出顺序,查找有序线性表的顺序查找他的茶有失败的平均查找长度我们就通过这样一个公式来计算,那么其中PC代表的依旧是所有元素的查找它的概率,那么这里因为失败的元素是不是有非常多呀?我们在复兴到10这个区间,是不是有无穷多个查找失败的方向,所以这里如果我们按照的是每个元素来讲的话,其实是没办法计算到,我们只有在实际做题时给出到底查找了哪些失败的元素,才可以计算出它产生值y值到平均值的长度,但是如果我想总结的话,那么我们就要以区间为一个单位了对于。才可以计算它查找失败时的平均查找长度,但是如果我想总结的话,那么我们就要以区间为一个单位了,这里我们发现对于判定数来讲,它的查找失败节点是不是已经有 n加一个,然后如果有了等等成功起点,它的失败起点已经有n加一个,其实非常简单,是不是每个生活节点它到左边这个节点一定是一个失败节点,而且最后一个节点一定有两个失败节点,所以一共有n加一岗失败节点,那么有人加一个失败节点,每一个失败节点失败节点查找的概率是不是就是n+11/5啊,大家注意一下再次强调,这与我们是以失败的这个区间为一个单位的是一个单位的因为就可以通过了长度。棒的好,这样我们就可以通过这样一个公式来计算出有序性表在查找失败时的平均差长度,那么pj是n+1/1,那么cc是 lj-1,也就是对应这个失败节点的层数减一刚刚我们讲出了为什么要减1了,那么接着我们把它代入n+1/1+2,一直加到n再加n这里,为什么是1+2一直加到n再加n,那那么当然是第1个失败节点,它的层数为2啊,那么2-1是不是就一样一次的是2然后加3一直加到n这里,为什么还要加一个呢?发现最后一个成功的起点是不是左右有两个失败节点啊,所以是n加n会得到一个答案就是二分之恩加上失败失败。1/n加上n加2/n,这就是失败时的平均查找长度,那么正如刚刚我们所讲,这里的失败的平均差长度是对应每一个失败节点的失败的平差长度,所以说在考验做题当中,对于这样一个公式直接利用它代入求简计算的情况非常的少,大部分情况都是题目会给出我们几个查找失败的例子来,让我们计算它的失败时平均差的长度,但是同学们要理解这样一个公式是如何计算而来的好,这就是本节课的全部内容。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值