码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • “查找”学习提纲(三)——总结


    文章目录

    • 前言
    • 系列文章
    • 代码模板
    • 查找方式的选择因素
    • 线性查找
      • 折半查找、插值查找和斐波那契查找
    • 树型查找
      • 折半查找和二叉排序树查找
      • 二叉排序树查找、平衡二叉排序树查找和红黑二叉排序树查找
    • 散列查找
    • 总表
    • 作者的话

    前言

    “查找”学习提纲(三)——总结


    系列文章

    • “查找”学习提纲(一)——线性查找_夜悊的博客-CSDN博客

    代码模板

    • 线性查找的C++语言描述实现模板_夜悊的博客-CSDN博客
    • 二叉排序树的C++语言描述实现模板_夜悊的博客-CSDN博客

    查找方式的选择因素

    • 目的:静态查找或动态查找
    • 次序:无序或有序
    • 数据结构:顺序存储或链式存储;线性结构或非线性结构
    • 性能:低效或高效

    线性查找

    名称适用时间复杂度空间复杂度
    顺序查找线性表O(n)O(1)
    折半查找有序顺序表O(logn)O(1)
    插值查找有序顺序表O(logn)O(1)
    斐波那契查找有序顺序表O(logn)O(m)
    稠密索引查找---
    分块查找线性表O(logn)~O(n)O(m)
    倒排索引查找---

    折半查找、插值查找和斐波那契查找

    • 过程相似,分隔值的选择策略不同,可能影响性能:折半查找为加法和除法运算,插值查找为加、减、乘和除法运算,斐波那契查找为加法和减法运算
    • 若数据规模大,关键字分布均匀,则性能:插值查找优于折半查找
    • 平均性能:斐波那契查找优于折半查找

    树型查找

    名称适用时间复杂度空间复杂度
    二叉排序树查找动态表->二叉排序树O(logn)~O(n)O(n)
    平衡二叉排序树查找动态表->平衡二叉排序树O(logn)O(n)
    红黑二叉排序树查找动态表->红黑二叉排序树O(logn)O(n)
    B树查找动态表->B树O(logn)O(n)
    B+树查找动态表->B+树O(logn) | O(mlogn) | O(logmlogn)O(n)

    折半查找和二叉排序树查找

    • 过程相似

    折半查找:

    • 适用有序顺序表
    • 二叉判定树唯一
    • 插入和删除的时间复杂度:O(n)。n为数据规模

    二叉排序树查找:

    • 适用动态表
    • 二叉排序树不唯一(关键字相同,插入顺序不同)
    • 插入和删除的时间复杂度:O(logn)。n为数据规模(平均情况)

    二叉排序树查找、平衡二叉排序树查找和红黑二叉排序树查找

    • 一般性能:平衡二叉排序树查找和红黑二叉排序树查找优于二叉排序树查找
    • 若插入和删除操作相对少,查找操作相对多,适用平衡二叉排序树查找
    • 若插入和删除操作相对多,查找操作相对少,适用红黑二叉排序树查找

    散列查找

    名称适用时间复杂度空间复杂度
    散列查找查找性能要求高,记录关系无要求O(1)O(m)

    总表

    名称适用时间复杂度空间复杂度
    顺序查找线性表O(n)O(1)
    折半查找有序顺序表O(logn)O(1)
    插值查找有序顺序表O(logn)O(1)
    斐波那契查找有序顺序表O(logn)O(m)
    稠密索引查找---
    分块查找线性表O(logn)~O(n)O(m)
    倒排索引查找---
    二叉排序树查找动态表->二叉排序树O(logn)~O(n)O(n)
    平衡二叉排序树查找动态表->平衡二叉排序树O(logn)O(n)
    红黑二叉排序树查找动态表->红黑二叉排序树O(logn)O(n)
    B树查找动态表->B树O(logn)O(n)
    B+树查找动态表->B+树O(logn) | O(mlogn) | O(logmlogn)O(n)
    散列查找查找性能要求高,记录关系无要求O(1)O(m)

    作者的话

    • 感谢参考资料的作者/博主
    • 作者:夜悊
    • 版权所有,转载请注明出处,谢谢~
    • 如果文章对你有帮助,请点个赞或加个粉丝吧,你的支持就是作者的动力~
    • 文章在描述时有疑惑的地方,请留言,定会一一耐心讨论、解答
    • 文章在认识上有错误的地方, 敬请批评指正
    • 望读者们都能有所收获

  • 相关阅读:
    hivesql执行过程
    3、构建实时数据仓库-ods和dim层构建
    人工智能知识全面讲解:梯度下降法
    淘宝商品详情API接口(标题|主图|SKU|价格|商品销量)
    Android eSIM-LPA基于Android13的实现
    ARM Linux如何模拟PTE的脏位,访问位和文件位?
    第二章 数据链路层
    Python—Scrapy实践项目
    MTK system_server 卡死导致手机重启案例分析
    如何准备好一场vue面试
  • 原文地址:https://blog.csdn.net/m0_62083249/article/details/126772091
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号