散列表下

作者: TomGui | 来源:发表于2020-05-27 22:41 被阅读0次

为什么散列表和链表经常会一起使用?

  • 散列表这种数据结构虽然支持非常高效的数据插入、删除、查找操作,但是散列表中的数据都是通过散列函数打乱之后无规律存储的。也就说,它无法支持按照某种顺序快速地遍历数据。如果希望按照顺序遍历散列表中的数据,那我们需要将散列表中的数据拷贝到数组中,然后排序,再遍历。
  • 因为散列表是动态数据结构,不停地有数据的插入、删除,所以每当我们希望按顺序遍历散列表中的数据的时候,都需要先排序,那效率势必会很低。为了解决这个问题,我们将散列表和链表(或者跳表)结合在一起使用。

LRU 缓存淘汰算法

当要缓存某个数据的时候,先在链表中查找这个数据。如果没有找到,则直接将数据放到链表的尾部;如果找到了,我们就把它移动到链表的尾部。因为查找数据需要遍历链表,所以单纯用链表实现的 LRU 缓存淘汰算法的时间复杂很高,是 O(n)。

总结一下,一个缓存(cache)系统主要包含下面这几个操作:

  • 往缓存中添加一个数据;
  • 从缓存中删除一个数据;
  • 在缓存中查找一个数据。

相关文章

  • 散列表下

    为什么散列表和链表经常会一起使用? 散列表这种数据结构虽然支持非常高效的数据插入、删除、查找操作,但是散列表中的数...

  • 散列表下

    在上一章我们实现了对数组加链接的基础组合 大量经验丰富的的程序员给除的应用实例,基于拉链法的散列表种使用 大小为M...

  • 散列表(下)

    如何设计一个好的散列函数 散列函数的设计不能太复杂,过于复杂的散列函数会消耗很多计算时间,间接影响散列表的性能。 ...

  • 散列表(下)

    一、为什么散列表和链表经常放在一起使用? 1.散列表的优点:支持高效的数据插入、删除和查找操作2.散列表的缺点:不...

  • 散列表下

    为什么散列表和链表经常会一起使用? 散列表这种数据结构虽然支持非常高效的数据插入、删除、查找操作,但是散列表中的数...

  • 散列表(下):为什么散列表和链表经常会一起使用?

    散列表(下):为什么散列表和链表经常会一起使用? 散列表和链表经常会被放在一起使用。 在链表那一节,学到了如何用链...

  • 数据结构与算法笔记day16:散列表(中)

    今天我们学习的内容是,如何设计一个可以应对各种异常的工业级散列表,来避免在散列冲突的情况下,散列表性能的急...

  • 数据结构-散列表(下)

    为什么散列表和链表经常会一起使用? 今天,我们就来看看,在这几个问题中,散列表和链表都是如何组合起来使用的,以及为...

  • 散列表

    1.啥是散列表及散列函数? 很多语言都提供了散列表的实现方式,python是用dict{ }来实现 2.有啥优势?...

  • 散列表

    基本概念(非严谨) 散列表:按照思考事物本质以及理想状态的思路,那么散列表从本质来讲就是一个表,而理想的散列表应该...

网友评论

    本文标题:散列表下

    本文链接:https://www.haomeiwen.com/subject/ygknahtx.html