LRU算法简单实现

package two;

import java.util.Scanner;

public class LRU {

    public static void main(String[] args) {
        int l=0;
        Integer []now=new Integer[5];
//        System.out.print(now[2]);
        System.out.println("输入多少个数值:");
        Scanner in=new Scanner(System.in);
        int count=in.nextInt();
        int []a=new int[count];
        System.out.println("输入他们");
        for(int i=0;i<count;i++){
            a[i]=in.nextInt();
        }

        boolean linshi=true;
        for(int i=0;i<count;i++){

            for(int j=0;j<l;j++){
                if(now[j]==a[i]){
                    for(int o=j;o>0;o--){
                        now[o]=now[o-1];

                        }

                    now[0]=a[i];
                    linshi=false;

                    break;
                }
            }

            if(linshi){
                for(int j=0;j<5;j++)
                    if(now[j]==null){

                        for(int o=j;o>0;o--)
                            now[o]=now[o-1];
                        now[0]=a[i];
                        linshi=false;
                        l++;
                        break;
                    }
             }
            if(linshi){
                System.out.println("删除的值是"+now[4]);
                for(int j=4;j>0;j--){

                    now[j]=now[j-1];
                }
                now[0]=a[i];
            }

            for(int j=0;j<now.length;j++){
                if(now[j]!=null){

                    System.out.print(now[j]+"  ");

                }
            }
            System.out.println();

            linshi=true;
         }

        }
//
}
时间: 2024-11-08 19:22:36

LRU算法简单实现的相关文章

使用java.util.LinkedList模拟实现内存页面置换算法--LRU算法

一,LRU算法介绍 LRU算法是最近最少未使用算法.当内存缺页时,总是优先选出距离当前最久未使用的页面换出,并把当前的缺页换入.该算法可用栈模拟实现. 栈顶总是保存当前最近访问的页面号,栈底则总是保存最久未访问的页面号.对于下一个页面,有两种情况: ①命中,则需要:更新栈顶元素.即将当前命中的页面号放到栈顶. ②未命中,这里还需要考虑栈是否满了.1)若栈未满,直接将未命中的页面号放到栈顶即可.2)栈已经满了,则需要选中一页换出(栈底元素是最久未访问的页面),然后再将新页面放入栈顶. 二,代码实现

缓存淘汰算法--LRU算法

1. LRU1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是"如果数据最近被访问过,那么将来被访问的几率也更高". 1.2. 实现 最常见的实现是使用一个链表保存缓存数据,详细算法实现如下: 1. 新数据插入到链表头部: 2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部: 3. 当链表满的时候,将链表尾部的数据丢弃. 1.3. 分析 [命中率] 当存在热点数据时,LRU的效率很好,但偶发性的

redis的LRU算法(一)

最近加班比较累,完全不想写作了.. 刚看到一篇有趣的文章,是redis的作者antirez对redis的LRU算法的回顾.LRU算法是Least Recently Used的意思,将最近最少使用的资源丢掉.Redis经常被用作cache,如果能够将不常用的key移除,尽量保留常用的,那内存的利用率就相当高了.当然,LRU也有弱点,考虑下面一种情况: ~~~~~A~~~~~A~~~~~A~~~~A~~~~~A~~~~~A~~| ~~B~~B~~B~~B~~B~~B~~B~~B~~B~~B~~B~~

LRU算法的Python实现

LRU:least recently used,最近最少使用算法.它的使用场景是:在有限的空间中存储对象时,当空间满时,会一定的原则删除原有的对象,常用的原则(算法)有LRU,FIFO,LFU等.在计算机的Cache硬件,以及主存到虚拟内存的页面置换,还有Redis缓存系统中都用到了该算法.我在一次面试和一个笔试时,都遇到过这个问题. LRU的算法是比较简单的,当对key进行访问时(一般有查询,更新,增加,在get()和set()两个方法中实现即可)时,将该key放到队列的最前端(或最后端)就行

关于LRU算法(转载)

原文地址: http://flychao88.iteye.com/blog/1977653 http://blog.csdn.net/cjfeii/article/details/47259519 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是"如果数据最近被访问过,那么将来被访问的几率也更高". 1.2.实现 最常见的实现是使用一个链表保存缓存数据,详细算法实现如下: 1. 新数据插入到链表头部: 2. 每当缓存命

探究redis和memcached的 LRU算法--------redis的LRU的实现

一直对这redis和memcached的两个开源缓存系统的LRU算法感兴趣.今天就打算总结一下这两个LRU算法的实现和区别. 首先要知道什么是LRU算法:LRU是Least Recently Used 近期最少使用算法.相关的资料网上一大堆.http://en.wikipedia.org/wiki/Cache_algorithms#LRU   redis的六种策略 rewriteConfigEnumOption(state,"maxmemory-policy",server.maxme

Android探索之图片缓存&lt;Lru算法&gt;(二)

前言: 上篇我们总结了Bitmap的处理,同时对比了各种处理的效率以及对内存占用大小.我们得知一个应用如果使用大量图片就会导致OOM(out of memory),那该如何处理才能近可能的降低oom发生的概率呢?之前我们一直在使用SoftReference软引用,SoftReference是一种现在已经不再推荐使用的方式,因为从 Android 2.3 (API Level 9)开始,垃圾回收器会更倾向于回收持有软引用或弱引用的对象,这让软引用变得不再可靠,所以今天我们来认识一种新的缓存处理算法

LinkedHashMap 和 LRU算法实现

个人觉得LinkedHashMap 存在的意义就是为了实现 LRU 算法. public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> { public LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder) { super(initialCapacity, loadFactor); this.

C语言实现FIFO算法与LRU算法

在操作系统中,当程序在运行过程中,若其所要访问的页面不再内存中而需要把他们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存调出一页程序或数据送磁盘的兑换区中.但哪一个页面调出,须根据一定的算法确定.通常,把选择换出页面的算法称为页面置换算法(Page-Replacement Algorithms).置换算法的好坏将直接影响到系统的性能. 1) 先进先出(FIFO)页面置换算法 该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰.该算法实现简单,只需