数据机构-----查找

静态查找

        静态查找是指在一个不会频繁改变的数据集中查找目标元素的操作。在静态查找中,数据集的内容在查找过程中不会被修改。

顺序查找

        也被称为线性查找,是一种简单直接的查找算法,用于在一个数据集中按顺序逐个比较元素,以找到目标元素的位置或确定其是否存在。时间复杂度也接近于 O(n)。

        

折半查找

        也称为二分查找(Binary Search),是一种高效的查找算法,适用于已排序的数据集。它通过不断将查找范围缩小一半来快速地定位目标元素,因此其时间复杂度为 O(log n),其中 n 是数据集的大小。

其他查找(次优查找)

动态查找

指在一个数据集中进行查找操作,其中数据集可能会频繁地插入、删除或修改元素。

二叉排序树

        二叉排序树(Binary Search Tree,简称BST)是一种特殊类型的二叉树,它具有以下性质:

  1. 每个节点都包含一个键值。
  2. 左子树上的节点的键值都小于根节点的键值。
  3. 右子树上的节点的键值都大于根节点的键值。
  4. 左子树和右子树也都是二叉排序树。

时间复杂化度为O(log n)。

二叉平衡树

        这些树在插入和删除操作时会自动进行平衡调整,以保持树的平衡性,从而确保查找操作的高效性。在平衡二叉树中,任何节点的左子树和右子树的高度差(平衡因子)不会超过一个特定的阈值(-1,0,1)。

时间复杂度为O(log n)。

哈希表

        哈希表用于实现键-值对的存储和快速查找。它通过将键映射到一个固定大小的数组(或桶)中的索引位置,从而实现高效的查找操作。哈希表的核心思想是通过哈希函数将键转换为索引,以快速定位值。

哈希函数

        哈希函数接受一个键作为输入,然后生成一个整数索引,用于定位值在数组中的位置。好的哈希函数应该能够将键均匀地映射到不同的索引位置,减少冲突(多个键映射到同一索引)的可能性

主要函数方法:直接定址法,数字分析法,平方取值法,折叠法,除留余数法。

冲突处理法

        由于哈希函数可能将不同的键映射到相同的索引位置,可能会导致冲突。冲突解决是处理这种情况的方法

开放地址法

        寻找下一个可用的索引位置来解决冲突(线性探测法,二次线性探测法,)

链地址法

将相同地址的记录用链表链接起来

再哈希法

算法和效率

影响效率的三大因素:哈希函数是否均匀冲突处理方法是否合理,哈希表的装填因子(填入表中元素的个数/哈希表的长度)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值