还剩26页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《数据结构-查找》ppt课件目录CONTENTS•查找的基本概念•顺序查找•二分查找•哈希查找•B树查找01查找的基本概念查找的定义01查找在数据结构中,查找是指根据给定的关键字,在数据集合中找出与关键字相等的元素02查找操作是数据结构中非常重要的一环,它涉及到如何快速、准确地找到所需的数据查找的分类010203线性查找二分查找哈希查找从数据结构的第一个元素将数据结构分为左右两部通过哈希函数将关键字转开始,逐个比较,直到找分,每次取中间元素与目化为数据结构中的位置,到目标元素或遍历完整个标元素比较,缩小查找范直接访问该位置上的元素数据结构围查找的性能指标时间复杂度空间复杂度平均查找长度衡量查找操作所需时间的衡量查找操作所需额外空平均每次查找操作所需比度量标准,包括最好、平间大小的度量标准较次数的度量标准均和最坏情况下的时间复杂度02顺序查找顺序查找的基本概念适用场景当数据结构中元素无序时,可以采顺序查找用顺序查找从数据结构中的第一个元素开始,逐个比较,直到找到目标元素或遍历完整个数据结构实现方式使用for循环或while循环,从第一个元素开始比较,如果找到目标元素则返回该元素,否则继续遍历顺序查找的算法实现•伪代码描述顺序查找的算法实现```function sequential_searchdata_structure,targetfor ifrom0to lengthdata_structure-1顺序查找的算法实现if data_structure[i]return-1#如果未==target找到目标元素,则返回-1或其他特定值return i#返回目标元素的索引顺序查找的算法实现```示例代码(Python)```python顺序查找的算法实现def sequential_searchlst,targetfor iin rangelenlstiflst[i]==target顺序查找的算法实现return i#返回目标元素的索引return-1#如果未找到目标元素,则返回-1或其他特定值```顺序查找的时间复杂度分析时间复杂度On,其中n为数据结构中元素的个数因为最坏情况下需要遍历整个数据结构空间复杂度O1,只需要常数级别的额外空间来存储循环变量等03二分查找二分查找的基本概念总结词二分查找是一种在有序数组中查找特定元素的搜索算法详细描述二分查找的基本思想是将数组分成两半,比较中间元素与目标值,如果目标值与中间元素相等,则查找成功;如果目标值小于中间元素,则在左半部分数组中继续查找;如果目标值大于中间元素,则在右半部分数组中继续查找,直到找到目标值或搜索区间为空二分查找的算法实现总结词二分查找的算法实现包括确定搜索区间、比较中间元素和目标值、根据比较结果调整搜索区间等步骤详细描述在算法实现中,首先需要确定搜索区间,即整个数组或搜索区间的左右端点然后比较中间元素与目标值,根据比较结果调整搜索区间,继续查找,直到找到目标值或搜索区间为空二分查找的时间复杂度分析总结词二分查找的时间复杂度为Olog n,其中n为数组长度详细描述二分查找的时间复杂度分析基于每次将搜索区间减半的原则在每次查找过程中,搜索区间长度减半,因此需要进行log n次查找才能找到目标值或搜索区间为空因此,二分查找的时间复杂度为Olog n04哈希查找哈希查找的基本概念哈希查找是一种通过哈希函数哈希查找具有快速查找的特点,哈希查找需要预先定义哈希函将键映射到存储位置的查找方其时间复杂度为O1数和解决哈希冲突的方法法哈希函数的构造方法01020304直接定址法除余法平方取中法数字分析法将键值直接映射到存储位置,将键值除以某个常数取余数作将键值平方后取中间几位作为根据键值的数字特性进行分析,适用于键值数量较少的情况为存储位置,适用于键值数量存储位置,适用于键值数量较选择合适的哈希函数,适用于较多且分布均匀的情况多且分布不均匀的情况具有特定数字特性的键值哈希冲突的处理方法开放地址法当发生哈希冲突时,通过一定的探测方法找到下一个可用的存储位置常见的开放地址法有线性探测、二次探测和双散列等再哈希当发生哈希冲突时,使用另一个哈希函数计算存储位置,直到找到可用的位置再哈希可以提高哈希查找的均匀性和负载因子链地址法将所有具有相同哈希值的键值链接在一起,形成一个链表当发生哈希冲突时,将新插入的键值添加到链表的末尾链地址法适用于存储空间充足且负载因子适中的情况05B树查找B树的基本概念01020304B树是一种自平衡的多路搜索B树的每个节点包含关键字和B树的特性包括分裂和合并操B树的阶数定义了每个节点的树,主要用于磁盘或其他直接子节点指针关键字按升序排作,以保持树的平衡最大子节点数,通常为m访问辅助设备上的数据存储和列,并将节点分为若干个子集检索B树的查找算法实现从根节点开始查找,比较如果目标关键字小于当前要查找的关键字与节点的节点的最小关键字,移动关键字,按照相应规则移到左子树动到子节点如果目标关键字在两个关键字的范围内,移动到相应的子树如果目标关键字等于节点中的某个关键字,查找成如果目标关键字大于当前功节点的最大关键字,移动到右子树B树查找的时间复杂度分析平均时间复杂度最坏时间复杂度最好时间复杂度Olog n,其中n为B树中关键字Olog n,出现在B树退化成单O1,当B树退化为一个节点时的数量链树时感谢您的观看THANKS。