LRU
来源:互联网 发布:淘宝销量在哪里看 编辑:程序博客网 时间:2024/05/29 04:08
介绍
LRU是Least Recently Used 近期最少使用算法。内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,操作系统会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。
代码
#include <stdio.h>#ifndef MIN #define MIN(A,B) ((A) < (B) ? (A) : (B))#endif#define LRU_LEN 5int lru[LRU_LEN + 1];int cur_len = 0;static void push_lru(int data);static void print_lru();static int item_index(int data);int main(int argc, char ** argv){ for (int i = 0; i < LRU_LEN + 1; i ++) { lru[i] = 0; } int data = 0; while (EOF != scanf("%d", &data)) { push_lru(data); print_lru(); } return 0;}void push_lru(int data){ int idx = item_index(data); if (idx == -1) { for (int i = LRU_LEN; i > 0; i --) { lru[i] = lru[i - 1]; } cur_len += 1; } else { for (int i = idx; i > 0; i --) { lru[i] = lru[i - 1]; } } cur_len = MIN(cur_len, LRU_LEN); lru[0] = data;}// -1 说明是新值int item_index(int data) { for (int i = 0; i < cur_len; i ++) { if (lru[i] == data) return i; } return -1;}void print_lru() { int min_value = MIN(cur_len, LRU_LEN); for (int i = 0; i < min_value; i ++) { printf("%d", lru[i]); if (i == min_value - 1) { printf("\n"); }else { printf(" "); } }}
运行结果
0 0
- LRU
- LRU
- LRU
- LRU
- LRU
- LRU
- LRU
- LRU
- LRU算法
- LRU算法
- LRU算法
- LRU算法
- LRU设计
- LRU 算法
- LRU算法
- LRU算法
- LRU Cache
- LRU Cache
- 处理大并发之二 对libevent的初步认识
- 【Hadoop错误】secondarynamenode没有启动
- JDK里的设计模式
- ※※深入理解JVM—JVM内存模型※※
- 深入理解Servlet转发和重定向
- LRU
- linux下编写c++,include的那些头文件在什么地方
- 机器学习练习记录(1):伪逆法、势函数、基于二次准则的H-K函数、感知器法
- 处理大并发之三 libevent demo详细分析(对比epoll)
- [Polya计数] BZOJ 3202 [Sdoi2013]项链
- 转载:NTFS交换数据流实验(晴刃原创)
- connect成功之后,accept返回之前,客户端和服务器的链接是否已建立
- Servlet Response对象
- ds1302简单解析