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);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM