lru算法c语言实现,

  lru算法c语言实现,

  本文主要详细介绍用Python实现的LRU缓存替换算法。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

  在第一部分中,已经实现了DoubleLinkedList类。在本节中,我们实现了基于双向链表的LRU(最近最少使用)缓存替换算法。redis的淘汰机制包括LRU算法,用于淘汰最近最少使用的数据。如何使用可以在Redis的配置文件中设置。

  

一、LRU算法的实现

 

  逻辑很简单。有两个操作,get和put。在get中,如果元素存在,节点将从当前位置移动到链表的头部,表示最近访问过的节点。Put也移动到链表的头部,而不管该节点之前是否存在。搜索的O(1)复杂度通过相同的映射实现。

  LRUCache类(对象):

  def __init__(self,capacity=0xffffffff):

  LRU缓存替换算法最近使用得最少。

  :参数容量:

  自我能力=能力

  self.size=0

  self.map={}

  self.list=DoubleLinkedList(容量)

  def get(self,key):

  获取元素

  Get元素不存在。不返回。

  获取元素已经存在。从当前位置删除节点,并将其添加到链表的头部。

  :参数键:

  :返回:

  #元素不存在

  如果密钥不在self.map:中

  不返回

  node=self.map.get(key)

  self.list.remove(节点)

  self.list.append_front(node)

  返回节点值

  定义put(self,key,value):

  添加元素

  添加的元素已经具有更新的元素值,并且已经到达链表的头部。

  添加的元素不存在。

  链表容量达到上限,删除尾部元素。

  链表的容量没有达到上限,添加到链表的头。

  :参数键:

  :参数值:

  :返回:

  如果键入self.map:

  node=self.map.get(key)

  节点值=值

  self.list.remove(节点)

  self.list.append_front(node)

  else:

  if self.size=self.capacity:

  old_node=self.list.remove()

  del self.map[old_node.key]

  self.size -=1

  node=Node(键,值)

  self.map[key]=节点

  self.list.append_front(node)

  self.size=1

  返回节点

  自定义打印(自助):

  打印当前链表。

  :返回:

  self.list.print()

  

二、测试逻辑

 

  if __name__==__main__:

  lru_cache=LRUCache(3)

  lru_cache.put(1,1)

  lru_cache.print()

  lru_cache.put(2,2)

  lru_cache.print()

  print(lru_cache.get(1))

  lru_cache.print()

  lru_cache.put(3,3)

  lru_cache.print()

  lru_cache.put(1,100)

  lru_cache.print()

  lru_cache.put(4,4)

  lru_cache.print()

  print(lru_cache.get(1))

  lru_cache.print()

  测试结果:

  这就是本文的全部内容。希望对大家的学习有所帮助,也希望大家能支持盛行的IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: