码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数据结构学习笔记(Ⅶ):查找


    目录

    1 查找

    1.1 定义

    1.2 查找操作

    1.3 算法评价指标

    2 查找算法

    2.1 顺序查找

    1.算法思想

     2.实现

    3.查找效率

    4.算法优化

    2.2 折半查找

    1.算法思想

    2.算法实现

    3.查找判定树

    4.折半查找效率

    2.3 分块查找

    1.算法思想

    2.查找效率分析

    3 B树

    3.1 B树概念

    3.2 B树的插入删除

    1.插入

    2.删除

    3.3 B+树

    1.定义

    2.查找

    3.与B树对比

    4 散列查找

    4.1 散列查找(上)

    1.散列表

    2.查找 

    3.散列函数

    4.2 散列查找(下)

    1.开放定址法

    2.再散列法


    1 查找

    1.1 定义

    查找——在数据集合中寻找满足某种条件的数据元素的过程称为查找
    查找表(查找结构)——用于查找的数据集合称为查找表,它由同一类型的数据元素(或记录)组成

    关键字——数据元素中唯一标识该元素的某个数据项的值,使用基于关键字的查找,查找结果应该是唯一的

    1.2 查找操作


    只需查找符合条件的数据元素的操作为静态查找表;同时需要进行插入、删除数据元素的操作为动态查找表

    1.3 算法评价指标

    查找长度——在查找运算中,需要对比关键字的次数称为查找长度
    平均查找长度(ASL, Average Search Length)——所有查找过程中进行关键字的比较次数的平均值


    2 查找算法

    2.1 顺序查找

    1.算法思想

    顺序查找又称线性查找,通常用于线性表。其思想即从头到尾(或逆向)查找

     2.实现

    3.查找效率

    时间复杂度O(n)

    4.算法优化

     对于有序表,可以利用查找判定树进行关键字对比。

    若被查找概率不相等,被查概率大的可以放在靠前位置。

    2.2 折半查找

    1.算法思想

    仅适用于有序的顺序表,即二分法 

    2.算法实现

    3.查找判定树

     折半查找判定树一定是平衡二叉树,只有底层是不满的。

    失败结点等于n+1

    4.折半查找效率

     查找成功与失败的ASL <= h

    2.3 分块查找

    1.算法思想

    2.查找效率分析

    3 B树

    3.1 B树概念

     为了保证m叉查找树的查找效率,规定除了根节点外,任何结点至少要[m/2]个分叉,即至少[m/2]-1个关键字;对于任何一个结点,其所有子树高度相同。 

    3.2 B树的插入删除

    1.插入

    2.删除

    3.3 B+树

    1.定义

    2.查找

    ·根结点开始逐层查找

    ·顺序查找

    3.与B树对比

    4 散列查找

    4.1 散列查找(上)

    1.散列表

    散列表(Hash Table),又称哈希表。是一种数据结构,特点是︰数据元素的关键字与其存储地址直接相关。通过哈希函数实现其映射关系。 
    若不同的关键字通过散列函数映射到同一个值,则称它们为“同义词”

    通过散列函数确定的位置已经存放了其他元素,则称这种情况为“冲突”
    用链接法处理冲突:将所有同义词存储在一个链表中

    2.查找 

    查找关键字后查找其链表内容 

    装填因子α  = 表中记录数/散列表长度

    3.散列函数

    4.2 散列查找(下)

    1.开放定址法

    2.再散列法

     

  • 相关阅读:
    (StackOverflow)使用Huggingface Transformers从磁盘加载预训练模型
    LabVIEW如何使用热键去触发自定义的事件
    AW2013芯片讲解
    运维开发详解
    linux系统Jenkins工具添加自由项目和maven项目
    费马小定理,876. 快速幂求逆元
    富文本编辑器(添加列表)
    MySQL-表的约束
    内存管理_memblock
    【5. 虚拟内存管理】
  • 原文地址:https://blog.csdn.net/m0_49939117/article/details/128123211
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号