LRU算法实现 最近最久未使用

1.LRU算法实现 最近最久未使用(蚂蚁金服笔试题,本人亲自经历的[苦笑.jpg])

实现原理:数组

主要功能:初始化、入队列

主要操作:数组元素移动

代码:

package com.ch.evaluation.TestJava;

/**
 * @Auther: 011336
 * @Date: 2019/4/9 17:27
 */
public class LRU {
    private int theArray[];
    private int back;      //定义队尾
    private int currentSize;     //队列中存放元素个数
    private int maxSize=5;       //队列中能存放元素的个数

    public LRU(){
        theArray=new int[maxSize];
        back=0;
        currentSize=0;
    }
    public void queue(int a[]){
        for(int i=0;i<a.length;i++){
            enQueue(a[i]);
        }
    }

    public void enQueue(int x){           //入队
        beUsed(x);                        //先判断是否已存在该页号,若存在,删除
        if(currentSize<maxSize){
            theArray[back]=x;
            back++;
            currentSize++;
        }else {             //满了
            for(int i=0;i<maxSize-1;i++){
                theArray[i]=theArray[i+1];
            }
            theArray[maxSize-1]=x;
        }
        for(int i=0;i<currentSize;i++){
            System.out.print(theArray[i]);
        }
        System.out.println();
    }
    public void beUsed(int x){            //判断是否已存在该页号,若存在,删除已有的
        for(int i=0;i<currentSize;i++){
            if(theArray[i]==x){
                for(int j=i;j<currentSize-1;j++){
                    theArray[j]=theArray[j+1];
                }
                currentSize--;
                back--;
            }
        }
    }
    public static void main(String[] args) {
        LRU lru=new LRU();
        int a[]={4,7,0,7,1,0,1,2,1,2,6};
        lru.queue(a);
    }
}

 

转载于:https://www.cnblogs.com/UncleWang001/p/10823757.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值