美文网首页
散列表下

散列表下

作者: TomGui | 来源:发表于2019-10-07 10:06 被阅读0次

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

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

    LRU 缓存淘汰算法

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

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

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

    相关文章

      网友评论

          本文标题:散列表下

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