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

前言

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


系列文章


代码模板


查找方式的选择因素

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

线性查找

名称适用时间复杂度空间复杂度
顺序查找线性表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)

作者的话

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值