C++(数据结构与算法):26---跳表和散列(哈希)介绍

一、跳表的概念

  • 在n个元素的有序数组上折半查找所需的时间为,但在有序链表上查找所需要的时间为O(n)。为了提高有序链表的查找性能,可以在全部或部分节点上增加额外的指针。在查找时,通过这些指针,可以跳过链表的若干个节点,不必从左到右连续查看所有节点。增加了额外的向前指针的链表叫跳表
  • 它采用随机技术来决定链表的哪些节点应增加向前指针,以及增加多少个指针
  • 基于这种随机技术,跳表的查找、插入、删除的平均复杂度均为。然而,最坏情况下的时间复杂度却为Θ(n)

二、散列(哈希)的概念

  • 散列又表称为哈希表
  • 散列是用来查找、插入、删除的另一种随机方法
  • 与跳表相比,它把操作时间提高到Θ(1),但最坏情况下的时间仍未Θ(n)。尽管如此,如果经常需要按序输出所有元素或按序查找元素,那么跳表的执行效率将优于散列
  • SL中使用了散列的容器类有:hash_map、hash_multimap、hash_multiset、hash_set

三、总结

  • 有序数组、有序链表、跳表、哈希表的渐进性能汇总如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董哥的黑板报

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值