数据结构与算法之美 | 学习笔记16 —— 散列表和链表组合应用

一、LRU缓存淘汰算法

LRU缓存淘汰算法,通过链表实现时,当要缓存某数据时,先在链表中从头到尾查找这个数据,找到时直接将它移动到链表尾部,如果找不到则直接将数据放入链表尾部。因为涉及遍历查找所以单纯用链表实现的时间复杂度为 O ( n ) O(n) O(n)
一个缓存系统主要包含添加、删除、查找数据的操作,这些都涉及到查找操作。如果将散列表和链表结合使用,可以将时间复杂度降低到 O ( 1 ) O(1) O(1)
数据结构与算法之美 | 学习笔记16 —— 散列表和链表组合应用_第1张图片
图中每个结点在两条链中,一个是双向链表,另一个是散列表中的拉链。其中,hnext指针将结点串联在散列表的拉链中
对于这种组合存储结构,查找和删除数据都很容易得出为 O ( 1 ) O(1)

你可能感兴趣的:(数据结构,链表,算法,数据结构,redis)