网站设计网站机构网站域名所有权证明

张小明 2026/1/10 14:14:27
网站设计网站机构,网站域名所有权证明,最新钓鱼网站源码,做网站如何通过流量赚钱吗查找的基本概念、顺序查找法、折半查找法 查找的基本概念 查找的定义#xff1a;给定一个值k#xff0c;在含有n个记录的表中找出关键字等于k的记录 若找到#xff0c;则查找成功#xff0c;返回该记录的信息或该记录在表中的位置#xff1b;否则查找失败#xff0c;返回…查找的基本概念、顺序查找法、折半查找法查找的基本概念查找的定义给定一个值k在含有n个记录的表中找出关键字等于k的记录若找到则查找成功返回该记录的信息或该记录在表中的位置否则查找失败返回相关的提示信息举例一个记录的结构类型定义如下typedefstruct{intkey;//关键字域...//其他域}Elemtype;上述记录包含的内容除关键字外还有很多其他内容。而查找时是靠关键字域来区分不同记录的和记录中的其他内容无关。因此可以把记录简化让记录中只存在关键字上述结构体就可以简化成一句int key;采取何种方法进行查找的相关因素如下使用哪种数据结构来表示查找表即查找表中的记录是按照何种方式组织的查找表中关键字的次序即对无序集合查找还是对有序集合查找由于查找算法的基本操作是关键字的比较并且关键字的比较次数与待查找关键字有关对于一个查找表来说对其中不同的关键字进行查找关键字的比较次数一般不同因此通常把查找过程中对关键字的平均比较次数也成为平均查找次数作为衡量一个查找算法效率优劣的标准。平均查找长度用ASL表示定义为ASL∑i1npi×ci ASL \displaystyle\sum_{i1}^np_i×c_iASLi1∑n​pi​×ci​式中n是查找表中记录的个数pip_ipi​是查找第i个记录的概率一般取1/ncic_ici​是找到第i个记录所需要进行比较的次数即查找长度知道了ASL就能求出一个查找算法的时间复杂度顺序查找法顺序查找法的基本思路从表的一端开始顺序扫描线性表依次将扫描到的关键字和给定值k进行比较若当前扫描的关键字与k相等则查找成功若扫描结束后仍未发现关键字等于k的记录则查找失败。顺序查找法对于顺序表和链表都是适用的例题数组a[]中有n个整数没有次序数组从下标1开始存储请写出查找任一元素k的算法若查找成功则返回元素在数组中的位置若查找不成功则返回0。计算其平均查找长度。intSearch(inta[],intn,intk){inti;for(i1;in;i)if(a[i]k)returni;return0;}ASL有两种一种是查找成功情况下的ASL1ASL_1ASL1​另一种是查找失败情况下的ASL2ASL_2ASL2​对于第一种pi1/np_i 1/npi​1/nciic_i ici​i若k等于a[i]则在扫描到a[i]之前已经进行了i-1次比较加上最后一次一共进行了i次比较因此ASL1∑i1ni/n(1/n)∗n∗(1n)/2(n1)/2 ASL_1 \displaystyle\sum_{i1}^n i/n (1/n)*n*(1n)/2 (n1)/2ASL1​i1∑n​i/n(1/n)∗n∗(1n)/2(n1)/2对于第二种k在a[]中值之外的范围内取值则查找不成功。这时k的取值是无线的但是对于k的任意一个取值其查找长度必为n。从上述代码的if语句可以看出对于所有的i值a[i] k都不成立则循环必执行n次即必有n次比较。因此ASL2nASL_2 nASL2​n折半查找法折半查找要求线性表是有序的即表中记录按关键字排序假设递增有序折半查找的基本思路设R[low,…,high]是当前的查找区间首先确定该区间的中间位置mid(lowhigh)/2然后将待查的k值与R[mid]比较若相等则查找成功并返回该位置否则需确定新的查找区间。若R[mid]k则由表的有序性可知R[mid,…,high]均大于k因此要到左边的子表R[low,…,mid-1]中查找。类似地如果R[mid]k则要到右边的子表R[mid1,…,high]中查找。递归地处理新区间直到子区间的长度小于1时查找过程结束。intBsearch(intR[],intlow,inthigh,intk){intmid;while(lowhigh){mid(lowhigh)/2;if(R[mid]k)returnmid;elseif(R[mid]k)highmid-1;elselowmid1;}return-1;}折半查找的过程可以用二叉树来表示。把当前查找区间的中间位置上的记录作为树根左子表和右子表中的记录分别作为根的左子树和右子树由此得到的二叉树称为描述折半查找的判定树。分块查找分块查找又称为索引顺序查找其数据结构可以简单地描述为分块查找把线性表分成若干块每一块中的元素存储顺序是任意的但是块与块之间必须按照关键字大小有序排列即前一块中的最大关键字要小于后一块中的最小关键字。对顺序表进行分块查找需要额外建立一个索引表表中的每一项对应线性表中的一块每个索引项都由键值分量和链值分量组成键值分量存放对应块的最大关键字链值分量存放指向本块第一个元素和最后一个元素的指针显然索引表中的所有索引项都是按照其关键字的递增顺序排列的。索引表定义如下typedefstruct{intkey;//假设表内元素为int型intlow,high;//记录某块中第一个和最后一个元素的位置}indexElem;indexElem index[maxSize];//定义索引表算法描述分块查找算法非常简单可以分为两步进行首先确定待查找的元素属于哪一块然后再块内精确查找该元素。由于索引表递增有序因此第一步采用折半查找。块内元素的个数一般比较少因此第二步采用顺序查找即可。分块查找实际上是进行两次查找整个算法的平均查找长度是两次查找的平均查找长度之和即折半查找平均查找长度顺序查找平均查找长度树形查找二叉排序树二叉排序树BST的定义二叉排序树要么是空树要么是满足以下性质的二叉树若它的左子树不空则左子树上所有的关键字均不大于不小于根关键字的值若它的右子树不空则右子树上所有的关键字均不小于不大于根关键字的值左右子树又各是一棵二叉排序树说明由二叉排序树的定义可以直到如果输出二叉排序树的中序遍历序列则这个序列是非递减非递增有序的若题目不做说明排序二叉树结点关键字按左小右大分布二叉排序树通常采用二叉链表存储其结点类型定义与一般的二叉树类似typedefstructBTNode{intkey;structBTNode*lchild;structBTNode*rchild;}BTNode;二叉排序树的基本算法查找关键字的算法实际上折半查找法的判定树就是一棵二叉排序树BTNode*BSTSearch(BTNode*bt,intkey){if(btNULL)returnNULL;else{if(bt-keykey)returnbt;elseif(keybt-key)returnBSTSearch(bt-lchild,key);elsereturnBSTSearch(bt-rchild,key);}}插入关键字的算法要插入关键字必须找到不影响二叉排序树的有序性的插入位置intBSTInsert(BTNode*bt,intkey){if(btNULL){bt(BTNode*)malloc(sizeof(BTNode));bt-lchildbt-rchildNULL;bt-keykey;return1;}else{if(keybt-key)return0;//关键字存在于树中插入失败返回0elseif(keybt-key)returnBSTInsert(bt-lchild,key);elsereturnBSTInsert(bt-rchild,key);}}构造算法只需要建立一棵空树然后将关键字逐个插入到空树中即可构造一棵二叉排序树voidCreateBST(BTNode*bt,intkey[],intn){inti;btNULL;for(i0;in;i)BSTInsert(bt,key[i]);}删除关键字的操作假设二叉排序树上的被删除结点为pf为其双亲结点则删除结点p的过程分为以下三种情况1p结点为叶子结点。由于删除叶子结点后不会破坏二叉排序树的特性因此直接删除即可2p结点只有右子树而无左子树或者只有左子树而无右子树。此时只需要将p删掉然后将p的子树直接连接在原来p与其双亲结点f相连的指针上即可3p结点既有左子树又有右子树。此时可以将这种情况转化为1或2中的情况做法为先沿着p的左子树根结点的右指针一直往右走直到来到其右子树的最右边的一个结点r也可以沿着p的右子树根结点的左指针一直往左走直到来到其左子树的最左边的一个结点r然后将p中的关键字用r中的关键字代替。最后判断如果r是叶子结点则按照1中的方法删除r如果r是非叶子结点则按照2中的方法删除r平衡二叉树平衡二叉树又称为AVL树是一种特殊的二叉排序树其左右子树都是平衡二叉树且左右子树高度之差的绝对值不超过1即以树中所有结点为根的树的左右子树高度之差的绝对值不超过1为判断是否为平衡二叉树引进了平衡因子的概念。平衡因子是针对结点来说的一个结点的平衡因子为其左子树高度减去右子树高度的差对于平衡二叉树树中所有结点的平衡因子的取值只能是-1、0、1平衡二叉树的建立过程和建立二叉排序树的过程基本一样都是将其关键字逐个插入空树中的过程但是每插入一个新的关键字都要进行检查看新插入的关键字是否会使原平衡二叉树失去平衡即树中出现平衡因子绝对值大于1的结点如果失去平衡则要进行平衡调整平衡调整时要先找出插入后失去平衡的最小子树再调整这棵子树调整之后无需调整其他非最小的不平衡子树删除时同二叉排序树的删除平衡调整有四种LL调整、LR调整、RR调整、RL调整这四种命名不是对调整过程的描述而是对不平衡状态的描述如LL调整描述的是新插入结点落在最小不平衡子树根结点的左L孩子的L左子树上B-树的基本概念、B树的基本概念B-树B树的基本概念B-树种所有结点的孩子结点个数的最大值称为B-树的阶通常用m表示从查找效率考虑要求m≥3.一棵m阶的B-树要么是一棵空树要么是满足以下要求的m叉树1每个结点最多有m个分支子树而最少分支数要看是否为根结点如果是根结点且不是叶子结点则至少有两个分支非根非叶结点至少有[m/2]个分支[a]是对a向上取整即不小于a的最小整数2有nk≤n≤m个分支的结点有n-1个关键字它们按递增顺序排列。k2根结点或[m/2]非根结点3每个结点的结构为nk1k_1k1​k2k_2k2​…knk_nkn​p0p_0p0​p1p_1p1​p2p_2p2​…pnp_npn​其中n为该结点种关键字的个数kik_iki​1≤i≤n为该结点的关键字且满足kiki1k_i k_{i1}ki​ki1​pip_ipi​0≤i≤n为该结点的孩子结点指针且满足pip_ipi​1≤i≤n-1所指结点上的关键字大于kik_iki​且小于ki1k_{i1}ki1​p0p_0p0​所指结点上的关键字小于k1k_1k1​pnp_npn​所指结点上的关键字大于knk_nkn​4结点内各关键字互不相等且按从小到大排列5叶子结点处于同一层可以用空指针表示是查找失败到达的位置B树的基本概念B树是B-树的一种变形可以对照记忆它们的差别如下1在B树中具有n个关键字的结点含有n个分支而在B-树中具有n个关键字的结点含有n1个分支2在B树种每个结点除根结点意外中的关键字个数n的取值范围为[m/2]≤n≤m根结点的取值范围为2≤n≤m而在B-树中它们的取值范围分别是[m/2]-1≤n≤m-1和1≤n≤m-13在B树中叶子结点包含信息并且包含了全部关键字叶子结点引出的指针指向记录4B树种的所有非叶子结点仅起到一个索引作用即结点中的每个索引项只含有对应子树的最大关键字和指向该子树的指针不含有该关键字对应记录的存储地址而在B-树中每个关键字对应一个记录的存储地址5在B树中有一个指针指向关键字最小的叶子结点所有叶子结点链接成一个线性链表而B-树没有散列表散列表的概念根据给定的关键字来计算关键字在表中的地址是散列Hash表和其他查找表的不同之处。在其他的查找表中关键字的地址跟关键字之间不存在确定的关系而在Hash表中关键字和关键字的地址是有确定关系的。这种关系可以用Hash函数H来表示。例如关键字为key则H(key)称为Hash地址即key在查找表中的地址散列表的建立方法以及冲突解决方法Hash表的建立方法是根据给定的关键字依照函数H来计算关键字key在表中的地址并把key存在这个地址上。如Hash函数为H(key) key Mod 13Mod计算两个整数相除后的余数对于关键字100来说地址为100 Mod 13 9这种存储方式可能会使多个关键字共用一个地址这种情况称为冲突当key1≠key2而H(key1) H(key2)时称发生了冲突这时也称key1和key2是Hash函数H的同义词这是不允许出现的。因此要做出一些处理来解决冲突使得每个地址对应一个关键字。解决冲突的一种可行的方法是从冲突发生的地址dH(key)开始依次探测d的下一个地址当达到下标为m-1的Hash表表尾时下一个探查的地址是表首地址0直到找到一个空闲单元为止将关键字保存在这个位置上HiH_iHi​(key)。一般冲突处理的过程是穿插在建表过程中的即边建表边检测冲突当发生冲突时立即解决冲突。说明 H(key)是key的Hash地址HiH_iHi​(key)是key解决冲突后的地址注意区分加入冲突处理后的Hash表在进行查找时先用Hash函数计算出一个地址然后用key和这个地址上的关键字进行比较如果当前地址为空则查找失败如果和当前地址上的关键字相同则查找成功如果不相同则根据冲突处理方法到下一个地址继续比较直到相同为止证明查找成功如果按照冲突处理方法寻找新地址的过程中又遇到空位置则同样查找失败。常用Hash函数的构造方法直接定址法取关键字或关键字的某个线性函数为Hash地址即H(key) key或者H(key) a*keyb其中a和b为常数数字分析法假设关键字时r进制数并且Hash表中可能出现的关键字都是实现知道的则可选取关键字的若干数位组成Hash地址。选取的原则时使得到的Hash地址尽量减少冲突即所选数位上的数字尽可能使随机的平方取中法取关键字平方后的中间几位作为Hash地址。通常在选定Hash函数时不一定能知道关键字的全部情况仅取其中的几位为地址不一定合适而一个数平方后的中间几位数和数的每一位都相关由此得到的Hash地址的随机性更大取的位数由表长决定除留余数法取关键字被某个不大于Hash表表长m的数p除后所得的余数为Hash地址即H(key) key Mod pp≤m在本方法中p的选择很重要一般p选择小于或者等于表长的最大素数这样可以减少冲突常用的Hash冲突处理方法开放定址法以发生冲突的Hash地址为自变量通过某种冲突解决函数得到一个新的空闲的Hash地址的方法有很多种下面举两种例子1线性探查法是从发生冲突的地址设为d开始依次探查d的下一个地址当达到下标为m-1的Hash表表尾时下一个探查的地址是表首地址0直到找到一个空的位置为止当m≥nn是表中关键字的个数时一定能找到一个空位置。线性探查法的递推公式为Hi(k)(H(k)i) Mod m(1≤i≤m−1) H_i(k) (H(k)i) ~~Mod~~m (1≤i≤m-1)Hi​(k)(H(k)i)Modm(1≤i≤m−1)线性探查法容易产生堆积问题。因为当连续出现若干同义词后设第一个同义词占用单元d这些连续的若干同义词将占用Hash表的d、d1、d2等单元上的Hash映射都会由于前面的同义词堆积而产生冲突尽管所有的这些关键词并没有同义词2平方探查法设发生冲突的地址为d则用平方探查法所得到的新的地址序列为d1²d-1²d2²d-2²…平方探测法时一种较好的处理冲突的方法可以减少堆积问题的出现。它的缺点是不能探查到Hash表上的所有单元但至少能探查到一半的单元3此外开放定址法的探查方法还有伪随机序列法以及双Hash函数法双Hash法即Hash地址为H(H(k))链地址法链地址法是把所有的同义词用单链表连接起来的方法。在这种方法中Hash表每个单元中存放的不再是记录本身而是相应同义词单链表的表头指针。散列表的性能分析查找成功时的平均查找长度是指找到表中已有表项的平均比较次数它是找到表中各个已有表项的平均比较次数。而查找不成功的平均查找长度是指在表中找不到待查的表项但找到插入位置的平均比较次数它是在表中所有可能散列到的地址上插入新元素时为找到空位置而进行探查的平均次数。Hash表的平均查找长度与关键字个数n无关而与装填因子a有关。装填因子时关键字个数和表长度的比值。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

个人网站备案备注写什么电脑建立网站平台

FaceFusion支持中文界面设置,降低国内用户使用门槛在AI视觉技术飞速普及的今天,一个看似微小的功能更新——界面语言的支持,往往能决定一款工具是“曲高和寡”还是“飞入寻常百姓家”。FaceFusion 作为当前开源社区中最受欢迎的AI换脸项目之一…

张小明 2026/1/6 2:40:34 网站建设

做美食网站的项目背景湖北省建设用地预审网站

计算机毕业设计附项目源码帮做/Java管理系统/springboot网站/深度学习/神经网络算法/yolo图像识别/从选题到部署,一篇搞定!-CSDN博客摘 要 相比于以前的传统校园个人闲置物品换购平台手工管理方式,智能化的管理方式可以大幅降低校园个人闲置…

张小明 2026/1/6 2:36:23 网站建设

简约式网站模板网页界面设计分析案例

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 同行可拿货,招校园代理 基于Django防疫站疫苗接种健康系统的设计与实现_d794c578…

张小明 2026/1/6 2:34:12 网站建设

胶州网站建设案例上海企业网站建设报

连接主义文本提议网络(CTPN):自然图像中的文本检测利器 【免费下载链接】CTPN Detecting Text in Natural Image with Connectionist Text Proposal Network (ECCV16) 项目地址: https://gitcode.com/gh_mirrors/ct/CTPN 项目介绍 连…

张小明 2026/1/6 2:32:09 网站建设

建设银行360网站登录不了关于网站建设投稿

VMware ESXi 8.0U3h macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版 ESXi 8.0U3 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur/IEIT SYSTEMS (浪潮)、H3C (新华三)、Cisco (思科)、Fujitsu (富士通)、Hitachi (日立)、NEC (日电)、Huawei (华为…

张小明 2026/1/8 0:49:15 网站建设